WSGI,uwsgi, uWSGI理解

2019-11-29  本文已影响0人  夜醉梦紅尘

WSGI

全称:Web Server Gateway Interface 翻译过来就是Web服务器网关接口;WSGI是一个规范协议,定义了Web服务器如何与Python应用程序进行交互,使得使用Python写的Web应用程序可以和Web服务器对接起来。

在WSGI中定义了两个角色,Web服务器端称为server或者gateway,应用程序端称为application或者framework(因为WSGI的应用程序端的规范一般都是由具体的框架来实现的)。

要使用WSGI,需要分别实现server角色和application角色。

Application端的实现一般是由Python的各种框架来实现的,比如Django, Flask等,一般开发者不需要关心WSGI的实现,框架会会提供接口让开发者获取HTTP请求的内容以及发送HTTP响应;

Server端的实现会比较复杂一点,这个主要是因为软件架构的原因。一般常用的Web服务器,如Apache和nginx,都不会内置WSGI的支持,而是通过扩展来完成。比如Apache服务器,会通过扩展模块mod_wsgi来支持WSGI。Apache和mod_wsgi之间通过程序内部接口传递信息,mod_wsgi会实现WSGI的server端、进程管理以及对application的调用。Nginx上一般是用proxy的方式,用nginx的协议将请求封装好,发送给应用服务器,比如uWSGI或者Gunicorn,应用服务器会实现WSGI的服务端、进程管理以及对application的调用。

WSGI描述了Server与Application之间通信的规范,简单来说,WSGI规范了以下几项内容:

WSGI协议主要包括server和application两部分,server负责接受客户端请求并进行解析,然后将其传入application,application处理请求并将响应头和正文返回server(严格说来,还有一个模块叫做中间件middleware,但中间件也同样使用上述两种接口进行通讯)

image

调用的结果会被封装成HTTP响应后再发送给客户端。

uwsgi

它是一个二进制协议,可以携带任何类型的数据。一个uwsgi分组的头4个字节描述了这个分组包含的数据类型。
uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信;

uWSGI

uWSGI是一个web服务器,实现了WSGI协议、uwsgi协议、http协议等

image

要注意 WSGI / uwsgi / uWSGI 这三个概念的区分。

附上参考链接
WSGI协议介绍(萌新版)
WSGI,uwsgi, uWSGI详解

上一篇 下一篇

猜你喜欢

热点阅读