如何理解Nginx, WSGI, Flask(Django)之间的关系

如何理解Nginx, WSGI, Flask(Django)之间的关系

值得指出的是,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 而出现的。
  • 最后以 Nginx,WSGI,Flask 之间的对话结束本文。
    Nginx:Hey,WSGI,我刚收到了一个请求,我需要你作些准备,然后由Flask来处理这个请求。
    WSGI:OK,Nginx。我会设置好环境变量,然后将这个请求传递给Flask处理。
    Flask:Thanks WSGI!给我一些时间,我将会把请求的响应返回给你。
    WSGI:Alright,那我等你。
    Flask:Okay,我完成了,这里是请求的响应结果,请求把结果传递给Nginx。
    WSGI:Good job!Nginx,这里是响应结果,已经按照要求给你传递回来了。
    Nginx:Cool,我收到了,我把响应结果返回给客户端。大家合作愉快~
上一篇:人工智能学习笔记二 —— 定义问题


下一篇:OpenStack、KVM、Docker——Docker之后还需要OpenStack吗?