jack-zheng
1/20/2018 - 8:58 AM

Relationship Between Flask, Nginx and WSGI

Relationship Between Flask, Nginx and WSGI

模型对比

Request 从客户端发送到 Flask 过程如下: Client -> Web服务器 -> WSGI -> Web框架

对到实际的环境就是: 浏览器(Chrome)-> Nginx -> WSGI(协议,不存在的) -> Flask

WSGI 不是代码, 是接口, 规定了Nginx 和 Flask 之间的通信协议, 类似无线通信协议啊什么的,概念一样

与 WSGI 相近的名词解释:

  • uwsgi, 同 wsgi 一样也是一种协议,uWSGI服务器正是使用了 uwsgi 协议
  • uWSGI, 实现了 uwsgi 和 WSGI 两种协议的web服务器。注意 uWSGI 本质上也是一种 web服务器,处于上面描述的三层结构中的 web服务器层。
  • CGI, 通用网关接口,并不限于 Python 语言,定义了 web服务器是如何向客户端提供动态的内容。例如,规定了客户端如何将参数传递给 web服务器,web服务器如何将参数传递给 web应用,web应用如何将它的输出如何发送给客户端,等等。 生产环境下的 web应用都不使用 CGI 了,CGI进程(类似 Python 解释器)针对每个请求创建,用完就抛弃,效率低下。WSGI 正是为了替代 CGI 而出现的。

Source From