作者:高玉成 | 来源:互联网 | 2023-10-13 09:07
我们下面统一使用server和application这两个术语。一般常用的Web服务器,如Apache和nginx,都不会内置WSGI的支持,而是通过扩展来完成。比如Apache服
WSGI全名: Web server网关界面翻译为Web服务器网关接口WGI,是定义web服务器如何与Python APP应用程序进行交互的规范协议,python
WSGI定义了两个角色,Web服务器端称为server或gateway,APP应用程序端称为application或framework (wssgi 以下统一使用术语server和application :
服务器端接收来自用户的请求,并根据规范请求调用APP应用程序端,如下图所示。
的调用结果被封装为HTTP响应,然后发送到客户端。
要使用WSGI,必须分别实现服务器角色和应用程序角色。
APP端的实现一般通过Python的各种框架来实现,例如Django、web.py等,一般开发者不需要在意WSGI的实现,框架是开发者获取HTTP请求的内容,HTTP响应
服务器端的实现会有点复杂,但这主要归咎于软件体系结构。 常见的Web服务器(如Apache和nginx )不是内置WSGI支持,而是通过扩展实现的。 例如,在Apache服务器上,扩展模块mod_WSGI支持wsgi。 Apache和mod_WSGI之间通过程序内部接口传递信息,mod_WSGI实现了wsgi对服务器端、流程管理和APP的调用。 Nginx通常以proxy的方式,通过Nginx协议封装请求并将其发送到APP应用程序服务器,如uWSGI。 APP应用服务器可实现WSGI的服务端、流程管理和对APP的调用。
uwsgi是二进制协议,可以携带任何类型的数据。 uwsgi包的前四个字节描述了该包中包含的数据类型。
uwsgi是线路协议而不是通信协议,在此常用于uwsgi服务器与其他网络服务器之间的数据通信。
uWSGI uWSGI是一个web服务器,是一个实现了uWSGI和wsgi两种协议的web服务器
WSGI、uwsgi、uWSGI:实现流程图