每次阅读 WSGI 或 CGI 时,我都会感到畏缩。我之前尝试过阅读它,但没有任何问题。
简单的英语到底是什么?
它只是将请求传送到终端并重定向输出吗?
最佳答案
从完全退步的角度来看,Blankman,这是我的 Web 服务器网关接口(interface)的“介绍页面”:
第一部分:网络服务器
Web 服务器提供响应。他们坐在那里,耐心地等待,然后毫无预兆地突然:
- 客户端进程发送请求。客户端进程可以是 Web 服务器、机器人、移动应用程序等等。它只是“客户”
- 网络服务器收到此请求
- 故意咕哝各种事情发生(见下文)
- 网络服务器向客户端发回一些东西
- 网络服务器再次出现
Web 服务器(至少是更好的)在这方面非常擅长。他们根据需求扩大和缩小处理规模,他们通过非常糟糕的网络可靠地与最脆弱的客户进行对话,我们永远不必担心。他们只是继续服务。
这是我的观点:Web 服务器就是这样:服务器。他们对内容一无所知,对用户一无所知,实际上除了如何等待很多并可靠地回复之外一无所知。
您选择的网络服务器应该反射(reflect)您的交付偏好,而不是您的软件。你的网络服务器应该负责服务,而不是处理或逻辑的东西。
第二部分:(PYTHON)软件
软件不会闲置。软件仅在执行时存在。当涉及到环境中的意外变化(文件不在预期的位置,参数被重命名等)时,软件并不能很好地适应。尽管优化应该是您设计的核心原则(当然),但软件本身并没有优化。开发人员进行优化。软件执行。软件完成了上面“故意咕哝”部分中的所有内容。可以是任何东西。
您对软件的选择或设计应该反射(reflect)您的应用程序、您对功能的选择,而不是您对 Web 服务器的选择。
这就是将语言“编译”到 Web 服务器的传统方法变得痛苦的地方。您最终将代码放入应用程序中以应对物理服务器环境,或者至少被迫选择适当的“包装器”库以在运行时包含,从而产生跨 Web 服务器的一致性错觉。
什么是 WSGI?
那么,最后,什么是 WSGI? WSGI 是一组规则,分为两半。它们的编写方式使得它们可以集成到任何欢迎集成的环境中。
为 Web 服务器端编写的第一部分说:“好的,如果你想处理一个 WSGI 应用程序,这就是软件在加载时的想法。这是你必须为应用程序提供的东西,这是您可以期望每个应用程序具有的界面(布局)。此外,如果出现任何问题,这就是应用程序的思考方式以及您可以预期它的行为方式。”
为 Python 应用程序软件编写的第二部分说:“好的,如果你想处理一个 WSGI 服务器,这就是服务器在联系你时的想法。这是你必须提供给服务器,这是您可以期望每台服务器都具有的界面(布局)。此外,如果出现任何问题,这是您应该如何行事,也是您应该告诉服务器的内容。”
所以你有它 - 服务器将是服务器,软件将是软件,这是一种他们可以很好相处的方式,而不必为另一个人的细节留出任何余地。这是 WSGI。
另一方面,mod_wsgi 是 Apache 的一个插件,可以让它与 WSGI 兼容的软件对话,换句话说,mod_wsgi 是一个 实现 - 在 Apache - 第一部分的规则上面的规则手册。
至于 CGI.... 问别人 :-)
关于python - 什么是纯英语的 WSGI 和 CGI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4929626/