欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

uWSGI、WSGI、uwsgi、wsgiref、werkzeug

程序员文章站 2023-08-30 08:13:13
WSGI WSGI: 全称是 ,`WSGI python API web server web application` 通信的规范 。是Web服务器和Web应用程序之间或框架之间的 通用接口标准 WSGI就是一座桥梁,WSGI的接口分为两个:一个是与Web服务器的接口,一个是与服务器端程序的接口; ......

wsgi

wsgi:全称是web server gateway interfacewsgi不是服务器,也不是python模块、框架、api或者任何软件,只是一种规范,描述web server如何与web application通信的规范。是web服务器和web应用程序之间或框架之间的通用接口标准

wsgi就是一座桥梁,wsgi的接口分为两个:一个是与web服务器的接口,一个是与服务器端程序的接口;wsgi的作用就是在协议之间进行转化。wsgi将web组件分成了三类:web 服务器(wsgi server)、web中间件(wsgi middleware)与web应用程序(wsgi application)。
web server接收http请求,封装一系列环境变量,按照wsgi接口标准调用注册的wsgi application(如:django程序),最后将响应返回给客户端。

虽然wsgi的设计目标是连接标准的web服务器(nginx、apache)与服务器端程序,但它本身也可以作为web服务器运行。但由于性能方面的限制,该服务器一般只在测试时使用。

uWSGI、WSGI、uwsgi、wsgiref、werkzeug

wsgiref

wsgiref则是官方给出的一个实现了wsgi标准用于演示用的简单python内置库,它实现了一个简单的wsgi server和wsgi application(在simple_server模块中),主要分为五个模块:simple_server, util, headers, handlers, validate。本质上就是编写一个socket服务端,用于接收用户请求(django)
wsgiref源码地址:

werkzeug

werkzeug 不是一个web服务器,也不是一个web框架,而是一个工具包,官方的介绍说是一个 wsgi 工具包,它可以作为一个 web 框架的底层库,因为它封装好了很多 web 框架的东西,werkzeug,本质上就是编写一个socket服务端,用于接收用户请求(flask),和django中的wsgiref是类似的。

uwsgi

uwsgi:是一种线路协议,是uwsgi服务器的独占协议,用于定义传输信息的类型(type of information),每一个uwsgi packet 前4byte为传输信息类型的描述,与wsgi协议是两种东西。

uwsgi

uwsgi是一个web服务器,它实现了wsgi协议、uwsgi、http等协议。nginx中httpuwsgimodule的作用是与uwsgi服务器进行交换。django项目部署实际上是uwsgi,他才是web服务器,而不是uwsgi。

有了uwsgi为什么还需要nginx?

因为nginx具备优秀的静态内容处理能力,然后将动态内容转发给uwsgi服务器,这样可以达到很好的客户端响应。支持的并发量更高,方便管理多进程,发挥多核的优势,提升性能。这时候nginx和uwsgi之间的沟通就要用到uwsgi协议。

uWSGI、WSGI、uwsgi、wsgiref、werkzeug