FPM和WSGI的区别

5

这是我目前的理解。

PHP-FPM和WSGI都是基于FastCGI的层吗?

那么可以这样说,WSGI就是Python的FPM吗?

1个回答

3

WSGI并不是FastCGI的一层,而是编写Python Web应用程序的规范,它足够通用,可以连接许多Web服务器或适配器,这些服务器或适配器可以与其他技术进行交互,包括FastCGI。但是,在WSGI安装中,长时间运行的进程所使用的协议FastCGI本身并不一定需要参与其中。例如,Apache模块mod_wsgi会直接从Apache向Python应用程序公开WSGI,并且不需要您运行单独的长时间运行的进程。

WSGI在PEP 333中定义。从该规范中提取的一个简单的应用程序如下所示:

def simple_app(environ, start_response):
    """Simplest possible application object"""
    status = '200 OK'
    response_headers = [('Content-type', 'text/plain')]
    start_response(status, response_headers)
    return ['Hello world!\n']

那么使用WSGI协议,您可以让服务器使用FastCGI吗? - Abdelouahab Pp
1
抱歉,我意识到我在那一部分表述不够清晰。我已经编辑了我的回答。仅仅写入WSGI并不能让你连接到支持FastCGI的服务器,但是你可以使用一个支持WSGI且能够与另一个支持FastCGI的服务器通信的服务器来实现这一点,例如flup中的服务器:https://pypi.python.org/pypi/flup - zigg
我曾认为WSGI是使用FastCGI的一种协议(可以使Python进程保持运行状态,而不必每次请求时都重新运行它)。 - Abdelouahab Pp
1
抱歉,我可能没有点击“保存”。我刚刚重新编辑了一下。基于WSGI的应用程序确实可以保持运行状态并处理许多请求,但它是由使用WSGI与其通信的服务器进行管理的。除非WSGI服务器反过来正在向另一个Web服务器使用FastCGI,否则不涉及FastCGI。 - zigg
抱歉,我还是没有明白这个概念,它们都使用长时间运行的监听进程吗?而 php-fpm 是一种替代的 PHP FastCGI 实现,具有一些额外的功能,所以我说WSGI也可能是一个 Python FastCGI 实现,对吗? - Abdelouahab Pp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接