SCGI 是一种与编程语言无关的连接前端 web 服务器和 web 应用程序的方式。WSGI 是针对 Python 的 Web 应用程序的接口标准。
虽然它们都源自于 CGI,但在范围上存在很大不同,实际上您可以合理地同时使用两者,例如让 web 服务器上的 mod_scgi 与作为 SCGI 服务器运行的 WSGI 应用程序进行通信。有多个库实现可将 WSGI 应用程序作为 SCGI 服务器运行(例如 wsgitools、cherrypy)。
它们都是“可靠的”,就规范而言,相对于特定的实现方案,规范更加可靠。现在,您可能会将应用程序编写为 WSGI 可调用函数,并将部署问题视为独立的问题。
也许 Apache+mod_wsgi(embedded) 接口可能比 Apache+mod_scgi+(SCGI wrapper lib) 快一点,但实际上这两者的差异不会太大。更有价值的是能够在各种服务器、平台和连接标准上运行应用程序。
SCGI(类似于FastCGI)是一种适用于Web服务器和Web应用程序之间进程间通信的(序列化)协议。
WSGI是一个Python API,连接同一进程(Python解释器)内的两个(或多个)Python WSGI兼容模块。一个模块代表Web服务器(可以是Python进程内Web服务器实现或通过例如SCGI到另一个进程中的Web服务器的网关)。另一个模块是或代表Web应用程序。此外,这两个模块之间的零个或多个模块可能作为WSGI“中间件”模块,执行诸如会话/cookie管理、内容缓存、身份验证等操作。WSGI API使用Python语言特性,如迭代/生成器和可调用对象在合作的WSGI兼容模块之间传递。