WSGI,uWSGI和uwsgi区别详解
https://blog.csdn.net/weixin_45455015/article/details/100113330
一、WSGI是什么?
WSGI,全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接口。描述的是Web服务器如何与Web应用间进行通信
它不是服务器、python模块、框架、API或者任何软件,只是一种描述web服务器(如nginx,uWSGI等服务器)如何与web应用程序(如用Django、Flask框架写的程序)通信的规范。
WSGI 的官方定义是,the Python Web Server Gateway Interface。从名字就可以看出来,这东西是一个Gateway,也就是网关。网关的作用就是在协议之间进行转换。
二、uWSGI是什么?
uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。它要做的就是把HTTP协议转化成语言支持的网络协议。比如把HTTP协议转化成WSGI协议,让Python可以直接使用。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。
要注意 WSGI / uwsgi / uWSGI 这三个概念的区分。
WSGI,是一种描述web服务器(如nginx,uWSGI等服务器)如何与web应用程序(如用Django、Flask框架写的程序)通信协议。
uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型(type of information),每一个uwsgi packet前4byte为传输信息类型描述,用于与nginx等代理服务器通信,它与WSGI相比是两样东西。
uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。
为什么有了uWSGI为什么还需要nginx?因为nginx具备优秀的静态内容处理能力,然后将动态内容转发给uWSGI服务器,这样可以达到很好的客户端响应。
————————————————
版权声明:本文为CSDN博主「钟灵毓秀M」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45455015/article/details/100113330
什么是 WSGI
先说一下CGI
,(通用网关接口, Common Gateway Interface/CGI),定义客户端与Web服务器的交流方式的一个程序。例如正常情况下客户端发来一个请求,根据HTTP
协议Web服务器将请求内容解析出来,进过计算后,再将加us安出来的内容封装好,例如服务器返回一个HTML
页面,并且根据HTTP
协议构建返回内容的响应格式。涉及到TCP
连接、HTTP
原始请求和相应格式的这些,都由一个软件来完成,这时,以上的工作需要一个程序来完成,而这个程序便是CGI
。
那什么是WSGI
呢?维基上的解释为,Web服务器网关接口(Python Web Server Gateway Interface,WSGI),是为Python
语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。从语义上理解,貌似WSGI
就是Python
为了解决Web服务器端与客户端之间的通信问题而产生的,并且WSGI
是基于现存的CGI
标准而设计的,同样是一种程序(或者Web
组件的接口规范?)。
WSGI区分为两部分:一种为“服务器”或“网关”,另一种为“应用程序”或“应用框架”。
所谓的WSGI
中间件同时实现了API
的两方,即在WSGI
服务器和WSGI
应用之间起调解作用:从WSGI
服务器的角度来说,中间件扮演应用程序,而从应用程序的角度来说,中间件扮演服务器。中间件具有的功能:
重写环境变量后,根据目标URL,将请求消息路由到不同的应用对象。
允许在一个进程中同时运行多个应用程序或应用框架
负载均衡和远程处理,通过在网络上转发请求和相应消息。
进行内容后处理,例如应用
XSLT
样式表。(以上 from 维基)
看了这么多,总结一下,其实可以说WSGI
就是基于Python
的以CGI
为标准做一些扩展。
作者:呸波纳契
链接:https://www.jianshu.com/p/65807220b44a
来源:简书
著作权归作者所有。非商业转载请注明出处。