39

从网上我了解到 WSGI 是用于 python web 开发/框架的 CGI。FCGI 似乎是各种语言的更通用的网关。不知道两者在参考语言 python 和 C/++ 方面的性能差异。

4

2 回答 2

80

正确,WSGI 是 Python 编程 API 定义,FASTCGI 是与语言无关的套接字线协议定义。实际上,它们位于不同的层,而 WSGI 是更高的层。换句话说,人们可以在碰巧使用 FASTCGI 与 Web 服务器通信的基础上实现 WSGI,但反之则不行。

一般来说,FASTCGI 是一种套接字线协议,这意味着您总是需要某种类型的编程接口才能使用它。对于 Python,一个这样的选项是 WSGI。由于 FASTCGI 只是达到目的的一种手段,因此在这种情况下无法真正将其性能与 WSGI 进行比较,因为 WSGI 不是可比较的套接字线路协议,而是 FASTCGI 本身的用户。

可以尝试在 FASTCGI 之上比较不同语言接口的性能,但总的来说,这本身毫无意义,因为较低的网络层和服务器请求处理不是瓶颈。相反,您的应用程序代码和数据库将是。

于 2009-11-17T11:14:56.513 回答
27

他们是两个不同的东西。WSGI 是用于编写 Web 应用程序的 Python 特定接口。几乎任何 Web 服务器协议都有包装器来提供 WSGI 接口。FastCGI (FCGI) 就是这样的网络服务器协议之一。因此,WSGI 是一个抽象层,而 CGI / FastCGI / mod_python 是实际的 Web 服务器与应用程序对话的方式。一些代码必须将本机接口转换为 WSGI(有一个 CGI 模块wsgiref,有flup用于 FastCGI 等)。还有mod_wsgi用于 Apache 的,它直接在 Apache 模块中进行翻译,因此您不需要任何 Python 包装器。

于 2009-11-17T08:19:44.427 回答