这两者有什么区别?哪个更好/更快/可靠?
3 回答
SCGI 是一种连接前端 Web 服务器和 Web 应用程序的语言中立方式。WSGI 是用于 Web 应用程序的特定于 Python 的接口标准。
尽管它们都起源于 CGI,但它们的范围相当不同,您确实可以同时使用两者,例如在 web 服务器上使用 mod_scgi 与作为 SCGI 服务器运行的 WSGI 应用程序对话。有多个库实现将为您将 WSGI 应用程序作为 SCGI 服务器运行(例如 wsgitools、cherrypy)。
它们都是“可靠的”,就像您认为规范可靠而不是特定实现一样。这些天来,您可能会将您的应用程序编写为 WSGI 可调用对象,并单独考虑部署问题。
也许 Apache+mod_wsgi(嵌入式)接口可能比Apache+ mod_scgi +(SCGI 包装器库)快一点,但很可能不会有太大的不同。更有价值的是在各种服务器、平台和连接标准上运行应用程序的能力。
SCGI(如 FastCGI)是一种(序列化)协议,适用于 Web 服务器和 Web 应用程序之间的进程间通信。
WSGI 是一个 Python API,在同一个进程(Python 解释器)中连接两个(或多个)Python WSGI 兼容模块。一个模块代表网络服务器(可以是 Python 进程内网络服务器实现,也可以是通过例如 SCGI 到另一个进程中的网络服务器的网关)。另一个模块是或代表 Web 应用程序。此外,这两个模块之间的零个或多个模块可以用作 WSGI“中间件”模块,执行会话/cookie 管理、内容缓存、身份验证等操作。WSGI API 使用 Python 语言功能,例如迭代/生成器和可调用对象的传递协作的 WSGI 兼容模块之间的对象。