浅析WSGI

WSGI

Python Web Server Gateway Interface(python web服务器网关接口),实际上就是一种协议,我们的应用(Django,Flask)实现了WSGI,就可以配合实现了WSGI的服务器(uWSGI,gunicorn)来工作了。

以下是WSGI工作的生命周期两种结构图

两级结构

在这种结构里,uWSGI作为服务器,它用到了HTTP协议以及wsgi协议,flask应用作为application,实现了wsgi协议。当有客户端发来请求,uWSGI接受请求,调用flask app得到响应,之后响应给客户端。

通常来说,Flask等Web框架会自己附带一个wsgi服务器(这就是flask应用可以直接启动的原因),但是这只是在开发阶段用到的,在生产环境是不够用的,所以用到了uwsgi这个性能高的服务器。

三级结构

这种结构里,uwsgi作为中间件,它用到了uwsgi协议(与nginx通信),wsgi协议(调用flask app)。当有客户端发来请求,nginx先做处理,然后再到uwsgi服务器,再到flask app,然后再一层层返回给客户端。

多一层反代有什么好处?

  • 提高web server性能(uWSGI处理静态资源不如nginx,nginx会在收到一个完整的http请求后再转发给uWSGI)
  • nginx可以做负载均衡
  • 在一定程度上提高了系统的安全性(客户端直接与nginx交互而不是直接和uWSGI交互)

uWSGI

uWSGI是一个实现了wsgi,uwsgi,http协议的服务器。

它有两种模式,http模式对应上面的两层结构,socket对应上面的三层结构。

参考链接:https://blog.csdn.net/baidu_35085676/article/details/80184874

原文地址:https://www.cnblogs.com/Xuuuuuu/p/14288757.html