WSGI与FCGI速度是否有差异?
从网上了解到,WSGI是Python网页开发和框架的一个接口,类似于CGI。FCGI看起来是一个更通用的接口,可以支持多种编程语言。我不太清楚这两者在Python和C/C++语言上的性能差别。
2 个回答
30
这两者是完全不同的东西。WSGI是一个专门为Python编写网页应用的接口。几乎所有的网页服务器协议都有相应的工具来提供WSGI接口。FastCGI(FCGI)就是其中一种网页服务器协议。所以,WSGI可以看作是一个抽象层,而CGI、FastCGI和mod_python则是实际的网页服务器与应用程序之间的沟通方式。需要一些代码来把原生接口转换成WSGI(在wsgiref
中有一个CGI模块,还有flup
用于FastCGI等等)。另外,Apache服务器有一个mod_wsgi
模块,它可以直接在Apache中进行转换,这样你就不需要任何Python的包装工具了。
82
没错,WSGI是一个Python的编程接口定义,而FASTCGI是一个和语言无关的套接字协议定义。简单来说,它们处于不同的层次,WSGI处于更高的层次。换句话说,你可以在使用FASTCGI与web服务器通信的基础上实现WSGI,但反过来就不行。
一般来说,FASTCGI作为一种套接字协议,意味着你总是需要在它之上有某种编程接口才能使用它。对于Python来说,WSGI就是这样一个选项。因为FASTCGI只是实现目标的一种手段,所以不能直接比较它和WSGI的性能,因为WSGI并不是一个可以直接比较的套接字协议,而是FASTCGI的一个使用者。
你可以尝试比较不同语言在FASTCGI上的接口性能,但一般来说,这样比较意义不大,因为底层的网络和服务器请求处理并不是瓶颈。真正的瓶颈通常在你的应用代码和数据库上。