记录一下关于 WSGI 的一点浅显了解

什么是 WSGI?Web Server Gateway Interface。通常,还会拿它和 CGI,Common Gateway Interface 做对比。

所以,WSGI 究竟是什么呢?简单来说:

WSGI 是 Python 世界中一个已成为事实标准的软件协议层,大部分基于 Python 开发的框架直接使用现成的 WSGI 软件层与真正的 Web Server 进行通讯。

用户发起 HTTP 请求,Web Server 接收请求,通过 WSGI 将请求信息发往 Python Web Framework,请求再得到处理之后,Web Server 将响应内容发往用户。

为什么要这么麻烦?因为 Web Server 大多使用 C 或 C++ 开发,无法直接与 Python 通讯。确实,几乎所有 Web Server 都自带一个 CGI 实现,可以用于和其它任意脚本语言进行通讯。但是 CGI 模式下,每次请求都要新起一个 Python 进程,消耗巨大,在实际生产中定然不会采取此种方法。

后来,渐渐出现了好多种基于 CGI 的改良版,FCGI(Fast CGI)最出名。CGI 不可用,其它改良版又是如此混乱,怎么办?于是 WSGI 出现了,作为一个独立的协议软件层,兼容众多主流的 CGI 改良版通讯协议。

这样一来,Python 开发的 Web 框架不再与 Web Server 直接通讯,而是通过 WSGI,至于 WSGI 具体怎样与 Web Server 通讯,Web 框架将不再关心。

框架专心应对自己的任务:高效分发路由,维护健康可用的线程池,优雅实现 MV(TC or VM)。 


不知是该恭喜,还是该怎样,总之阅读到该文的,你是第 人。每一次刷新,都是不同的自己。