python - 什么是纯英语的 WSGI 和 CGI​​?

标签 python cgi wsgi

每次阅读 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/

相关文章:

python - 如果我有足够的 RAM,如何加快解开大型对象的速度?

c - "hello world"c cgi 脚本在服务器上崩溃”

iis - ColdFusion/Shibboleth - REMOTE_USER

python - 如何在 Windows 中用 python 处理文件上传?

python - WSGI/APACHE/DJANGO ..导入错误: Could not import settings

python - 用拥抱和女服务员记录

python - 如何在 Python 中将数据从字典写入 CSV 文件

python - 如何: Python Convert Bytes to Readable ASCII/Unicode

Python - smtplib - 保存为草稿 - Gmail

python - 尝试从 WSGI/Python 启动 Chrome(确实又快又脏)[Win。 XP、x86、Python 2.7、Apache 2.2]