如何理解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,我收到了,我把响应结果返回给客户端。大家合作愉快~

最新文章

  1. APP国际化
  2. Query通过Ajax向PHP服务端发送请求并返回JSON数据
  3. ASP.NET 日期 时间 年 月 日 时 分 秒 格式及转换
  4. APPlication,Session,Cookie,ViewState和Cache之间的区别
  5. c++ 读取并解析excel文件方法
  6. ​ScrollView、ListView嵌套
  7. 减小Delphi的Exe文件大小(11种方法)
  8. C# Mutex
  9. 自定义ComboBox,简简单单实现
  10. python chanllenge题解
  11. Android的ProgressBar进度条-android学习之旅(三十一)
  12. MVC人员管理系统
  13. c++文件的读写
  14. Java编写一个随机产生小学生四则运算题30道
  15. 将Django部署到Linux
  16. Js扩容
  17. 动态规划-独特的子字符串存在于Wraparound String总个数 Unique Substrings in Wraparound String
  18. docker 安装完mysql 后客户端无法访问
  19. JAVA对图片的任意角度旋转,以及镜像操作
  20. input[type="checkbox"]与label对齐

热门文章

  1. Leetcode Tags(5)Hash Table
  2. Text 尺寸获取
  3. C#基本网络操作
  4. 设计模式C++描述----15.策略(Strategy)模式
  5. CSP2019知识点整理
  6. SpringMVC----执行流程+底层解析
  7. 二、安装JDK - Java软件的安装
  8. css3 transform做动画
  9. egret开发方法(最笨的方法)
  10. java多线程与线程并发四:线程范围内的共享数据