WSGI和FCGI之间有速度差异吗?

41

根据网络上的资料,WSGI是Python Web开发/框架的CGI。FCGI似乎是多种语言通用的网关。不知道在Python和C / ++等语言方面,两者之间的性能差异。

2个回答

81

没错,WSGI是Python编程API的定义,而FASTCGI是一种语言无关的套接字线路协议定义。实际上它们位于不同的层次,其中WSGI是更高级的层次。换句话说,可以在使用FASTCGI与Web服务器进行通信的某个东西之上实现WSGI,但反过来则不行。

通常情况下,由于FASTCGI是一种套接字线路协议,因此您总是需要在其上使用某种编程接口。对于Python而言,WSGI便是其中一种选择。由于WSGI本身就是FASTCGI的用户,因此在这种情况下,无法将其性能与FASTCGI进行比较,因为WSGI并非可比的套接字线路协议。

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


1
我认为询问fcgi应用程序响应请求和wsgi应用程序响应请求之间的时间差是有意义的。由于fcgi和wsgi是将编程语言与Web请求接口的两种不同方式,它们执行非常相似的操作。 - Ninjaxor

30

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


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