scgi和wsgi有什么区别?

19 投票
3 回答
17156 浏览
提问于 2025-04-11 20:11

这两个有什么区别呢?哪个更好、更快、更可靠呢?

3 个回答

11

这两者都是用来把一个网页应用连接到网页服务器的标准。一个明显的区别是,WSGI是来自Python的世界,我相信没有非Python的实现。

标准本身通常不能简单地用好/快/可靠来比较。

只有它们的具体实现才能进行比较,我相信你会找到这两种标准的优秀实现。

或许可以看看这个看看这个

12

SCGI(类似于FastCGI)是一种协议,适合在网络服务器和网络应用之间进行进程间通信。

WSGI是一个Python的接口,它可以让两个(或更多)兼容WSGI的Python模块在同一个进程(Python解释器)中连接起来。一个模块代表网络服务器(可以是一个Python内部的网络服务器实现,或者是通过SCGI等方式连接到另一个进程中的网络服务器)。另一个模块则是或代表网络应用。此外,这两个模块之间可以有零个或多个模块,作为WSGI的“中间件”模块,负责处理一些事情,比如会话/ cookie管理、内容缓存、身份验证等等。WSGI接口利用了Python的一些特性,比如迭代器/生成器和在合作的WSGI兼容模块之间传递可调用对象。

27

SCGI是一种可以让前端网页服务器和网页应用程序连接的方式,它不依赖于特定的编程语言。而WSGI则是专门为Python网页应用程序设计的接口标准。

虽然它们都源于CGI,但在使用范围上有很大不同。你完全可以同时使用这两者,比如在网页服务器上用mod_scgi与作为SCGI服务器运行的WSGI应用程序进行沟通。现在有很多库可以帮助你把WSGI应用程序当作SCGI服务器来运行(例如wsgitools、cherrypy)。

这两者都是“可靠的”,因为你可以认为一个规范是可靠的,而不是某个具体的实现。现在,你可能会把你的应用程序写成一个WSGI可调用的对象,然后再单独考虑如何部署它。

也许使用Apache加上mod_wsgi(嵌入式接口)会比Apache加上mod_scgi加上SCGI包装库稍微快一点,但实际上差别不会太大。更重要的是,你可以在各种服务器、平台和连接标准上运行你的应用程序。

撰写回答