【发布时间】:2010-12-17 08:44:24
【问题描述】:
我从网上了解到 WSGI 是用于 python web 开发/框架的 CGI。 FCGI 似乎是各种语言的更通用的网关。不知道两者在参考语言 python 和 C/++ 方面的性能差异。
【问题讨论】:
我从网上了解到 WSGI 是用于 python web 开发/框架的 CGI。 FCGI 似乎是各种语言的更通用的网关。不知道两者在参考语言 python 和 C/++ 方面的性能差异。
【问题讨论】:
正确,WSGI 是 Python 编程 API 定义,而 FASTCGI 是与语言无关的套接字线协议定义。实际上,它们位于不同的层,而 WSGI 是更高的层。换句话说,可以在碰巧使用 FASTCGI 与 Web 服务器进行通信的基础上实现 WSGI,但反之则不行。
一般来说,FASTCGI 是一种套接字线协议,这意味着您总是需要某种类型的编程接口才能使用它。对于 Python,一个这样的选项是 WSGI。由于 FASTCGI 只是达到目的的一种手段,因此在这种情况下无法真正将其性能与 WSGI 进行比较,因为 WSGI 不是一种可比较的套接字线路协议,而是 FASTCGI 本身的用户。
可以尝试在 FASTCGI 之上比较不同语言接口的性能,但总的来说,这本身毫无意义,因为较低的网络层和服务器请求处理不是瓶颈。相反,您的应用程序代码和数据库将是。
【讨论】:
它们是两种不同的东西。 WSGI 是用于编写 Web 应用程序的 Python 特定接口。几乎任何 Web 服务器协议都有包装器来提供 WSGI 接口。 FastCGI (FCGI) 就是这样的网络服务器协议之一。因此,WSGI 是一个抽象层,而 CGI / FastCGI / mod_python 是实际的 Web 服务器与应用程序对话的方式。一些代码必须将本机接口转换为 WSGI(wsgiref 中有一个 CGI 模块,FastCGI 有flup 等)。还有 mod_wsgi 用于 Apache,它直接在 Apache 模块中进行翻译,因此您不需要任何 Python 包装器。
【讨论】: