uWSGI
uWSGI是一个快速的、自维护、对开发者和系统管理者友好的应用程序容器,是纯c语言开发的服务器。uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。
uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。WSGI是一种Web服务器网关接口。它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范。
对于管理人员来说,uWSGI服务器提供了各种配置方法:命令行、环境变量、XML、INI、YAML、JSON、SQlite3数据库和LDAP。
除此之外,它的设计完全模块化,这意味着,可以使用不同的插件以便满足不同的技术应用,从而实现兼容性
作用:
它要做的就是把HTTP协议转化成语言支持的网络协议,比如把HTTP协议转化成WSGI协议,让Python可以直接使用。
WSGI
WSGI是web服务器网管接口,是一套协议,用于接收用户请求并将请求进行初次封装,然后交给web框架;
1. WSGI是一种规范,它定义了使用python编写的web app(django)与web server(uWSGI)之间接口格式,实现web app与web server间的解耦。
2. WSGI 没有官方的实现, 因为WSGI更像一个协议. 只要遵照这些协议,WSGI应用(Application)都可以在任何服务器(Server)上运行
3. WSGI实质:WSGI是一种描述web服务器(如nginx,uWSGI等服务器)如何与web应用程序(如用Django、Flask框架写的程序)通信的规范、协议。
uwsgi
uwsgi协议,是一个uWSGI服务器自有的协议,它用于定义传输信息的类型,每一个uwsgi packet(数据信息包)前 4byte为传输信息类型描述,用于与nginx等代理服务器通信,它与WSGI相比是两样东西。
uwsgi是一个二进制协议,能够携带任何类型的信息。uwsgi数据包的前4个字节用于描述信息的类型。uwsgi协议主要工作在TCP方式下。uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。
下面是他们通讯的流程:
uWsgi相当于是起到了一个转换的过程
客户端使用uwsgi协议发送请求给到uWSGI,然后
uWSGI使用WSGI协议给服务端发送请求
参考链接:https://blog.csdn.net/LinRuiC/article/details/84979360
https://www.cnblogs.com/wspblog/p/8575101.html