Answers:
WSGI在Web服务器启动时(作为Web服务器进程的一部分(嵌入式模式)或作为单独的进程(守护程序模式))运行Python解释器,并将脚本加载到其中。每个请求都会导致调用脚本中的特定功能,并将请求环境作为参数传递给该功能。
CGI将脚本作为每个请求的单独进程运行,并使用环境变量,stdin和stdout与之“通信”。
从完全后退的角度来看,Blankman,这是我的Web服务网关接口的“简介页”:
第一部分:网络服务器
Web服务器提供响应。他们坐在那里,耐心等待,然后突然没有任何警告:
Web服务器(至少是更好的服务器)在这方面非常擅长。他们根据需求扩展和缩减处理,通过可靠的网络可靠地与最薄弱的客户进行对话,而我们永远不必担心。他们只是继续服役。
这就是我的观点:Web服务器就是:服务器。他们对内容一无所知,对用户一无所知,实际上除了如何耐心等待和可靠答复外,一无所知。
您选择的Web服务器应该反映您的交付偏好,而不是您的软件。您的网络服务器应负责服务,而不是处理或逻辑事务。
第二部分:(PYTHON)软件
软件不存在。软件仅在执行时存在。当软件在其环境中发生意外更改(文件不在期望的位置,重命名参数等)时,软件并不适应。尽管优化应该是设计的中心原则(当然),但是软件本身并不能优化。开发人员乐观。软件执行。软件会执行上面“故意含糊不清”部分中的所有内容。可以是任何东西。
您对软件的选择或设计应反映您的应用程序,功能的选择,而不是Web服务器的选择。
这是将语言“编译”到Web服务器的传统方法变得很痛苦的地方。您最终将代码放入应用程序中以应对物理服务器环境,或者至少被迫选择一个适当的“包装”库以在运行时包括在内,从而使跨Web服务器具有统一性的错觉。
那么WSGI是什么?
那么,最后,WSGI是什么?WSGI是一套规则,分为两部分。编写它们的方式可以将它们集成到任何欢迎集成的环境中。
为Web服务器端编写的第一部分说:“好吧,如果您要处理WSGI应用程序,则这是该软件在加载时的思考方式。这是您必须为应用程序提供的内容,这里是您可以期望每个应用程序具有的界面(布局)。此外,如果出现任何问题,这是应用程序的思维方式以及期望行为的方式。”
为Python应用程序软件编写的第二部分说:“好吧,如果您要处理WSGI服务器,这是服务器与您联系时的思考方式。这是您必须向服务器提供的东西,以及这是您可以期望每台服务器都具有的接口(布局)。此外,如果出现任何问题,这是您的行为方式,也应该告诉服务器。”
因此,有了它-服务器将成为服务器,软件将成为软件,这是它们可以很好地相处的一种方式,而不必为彼此的细节留出余地。这是WSGI。
mod_wsgi的,而另一方面,是Apache的一个插件,让它跟WSGI兼容的软件,换句话说,mod_wsgi的是一个实现 -在Apache中-上面的规则手册第一部分的规则。
至于CGI ....问其他人:-)
如果您不清楚这个领域中的所有术语,并且让我们面对现实,那是一个令人困惑的首字母缩写词,那么还有一个很好的背景阅读器,以官方的Python HOWTO形式提供,它讨论了CGI,FastCGI,WSGI等。上。希望我先读。