uWSGI
uWSGI
是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HtpUwsgiModule的作用是与uWSGI服务器进行交换.
要注意 WSGI/uwsgi /uWSGI 这三个概念的区分。
WSGI
是一种通信协议,Flask,webpy,Django、CherryPy等等都自带WSGl,不过性能都不好.
Web服务器网关接口 (Python Web Server Gateway Interface,缩写为WSGI),WSGI是一套接口标准协议。UWSGI
同WSGI一样是一种通信协议。- 而
uWSGI
是实现了uwsgi和WSGI两种协议的Web服务器
WSGI
所谓WSGI(Web Server Gateway Interface)。它不是web server,也不是web app;而正是为了将web和app解耦、再连接起来的一道桥梁。因为它是一种通用的接口规范,规定了web server(如Apache、Nginx)和web app(或web app框架)之间的标准。因为如此,web app开发者就能专注于业务逻辑、专注于HTML文档的生成,而不用操心繁琐的网络底层实现(HTTP请求接收、建立连接、返回响应等),并能方便地组合搭配不同的web server + web app/框架了。
为什么有了uWSGI为什么还需要nginx?
因为nginx具备优秀的静态内容处理能力,然后将动态内容转发给uWSG服务器,这样可以达到很好的客户端响应。
说到这,我们基本确立了 uWSGI 在 web服务器与 web框架之间作用:
uWSG 就像一条纽带,将web服务器与 web框架连接起来Nginx 属于一种高并发能力 web服务器,Flask属于一种 web框架,因此,uWSGI与 Nginx、Flask 的作用就不明而喻了。
Nginx,uWSGl,Flask 之间的对话:
- Nginx: Hey,uWSGI,我刚收到了一个请求,我需要你作些准备,然后由Flask来处理这个请求.
- uWSGl`: OK,Nginx。我会设置好环境变量,然后将这个请求传递给Flask处理。
- Flask: Thanks uwSGI! 给我一些时间,我将会把请求的响应返回给你。
- uWSGI: Alright,那我等你。
- Flask: Okav,我完成了,这里是请求的响应结里,请求把结果传递给Nginx.
- uWSGI: Good job! Nginx,这里是响应结果,已经按照你的要i求给你传递回来啦。
- Flask: Cool,我收到了,我把响应结果返回给客户 端。大家合作愉快!