WSGI partⅠ

WSGI 是什么?

WSGI 不是服务器,不是Python的模块,不是一个框架,不是API也不是任何类型的软件,它只是服务器和应用程序通信的接口规范。

这个规范分为2部分:
为Web服务器端编写的第一部分说:“OK,如果你想处理一个WSGI应用程序,这是软件在加载时会如何思考,这是你必须为应用程序提供的东西,在这里是您可以期望每个应用程序拥有的界面(布局),以及,如果出现问题,应用程序将如何思考以及如何期待它的行为。“

第二部分是针对Python应用软件编写的,他说:“好的,如果你想接入一个WSGI服务器,那么这个服务器在与你联系的时候会这么想,这是服务器必须提供的东西,这是您可以期望每个服务器拥有的界面(布局),而且,如果出现任何问题,这里应该如何运行,这里应该告诉服务器。”

如果一个应用程序(或框架或工具包)是按照WSGI的规范写入,那么这个应用程序可以在任何写入了WSGI服务器上运行。
WSGI应用程序可以堆栈,位于堆栈中间的称为中间件,中间件必须实现WSGI接口,服务器和应用程序的两端。位于上层的中间件可以作为服务器,位于下层的中间件可以作为应用程序。

一个符合WSGI标准的服务器,只接受从客户端发起的请求,传递给应用程序,再将回应从应用程序发送给客户端。其他的细节工作都交给中间件或应用程序来完成。

为什么要使用WSGI

一个传统的Web服务器不知道如何启动Python应用程序。1990年后期,Grisha Trubetskoy 编写了一个名为 mod_python 的 Apache 模块来执行Python代码。mod_python 流行了一段时间,由于不够规范化和存在安全隐患,所以 Python 社区提出了使用WSGI作为模块和容器可以实现的接口。

文章内容来自:
WSGI-Introduction
Full Stack Python
What are WSGI and CGI in plain English?-Stack Overflow