WSGI,uwsgi, uWSGI详解

版权声明:转载请标明出处 https://blog.csdn.net/gymaisyl/article/details/85038932

WSGI

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

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

server端会先收到用户的请求,然后会根据规范的要求调用application端,如下图所示:
在这里插入图片描述
调用的结果会被封装成HTTP响应后再发送给客户端。

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

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

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

uwsgi

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

uWSGI

uWSGI是一种web服务器,是实现了uwsgi和WSGI两种协议的Web服务器


WSGI,uwsgi, uWSGI: 实现过程图解

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/gymaisyl/article/details/85038932