从网上我了解到 WSGI 是用于 python web 开发/框架的 CGI。FCGI 似乎是各种语言的更通用的网关。不知道两者在参考语言 python 和 C/++ 方面的性能差异。
2 回答
正确,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(有一个 CGI 模块wsgiref
,有flup
用于 FastCGI 等)。还有mod_wsgi
用于 Apache 的,它直接在 Apache 模块中进行翻译,因此您不需要任何 Python 包装器。