网络服务网管接口:uWSGI
什么是wsgi
WSGI,全称 Web Server Gateway Interface,即网络服务网管接口。 WSGI 是作为 Web 服务器与 Web 应用程序或应用框架之间的一种低级别的接口, 以提升可移植 Web 应用开发的共同点。 WSGI 是基于现存的 CGI 标准而设计的。 很多框架都自带了 WSGI server ,比如 Flask,webpy,Django、CherryPy等等。 当然性能都不好。 生产环境时,自带的 web server 更多的是测试用途。 发布时则使用生产环境的 WSGI server或者是联合 nginx 做 uwsgi 。 Nginx+uWSGI 经常被使用。
基础作用
WSGI有两方:“服务器”或“网关”一方,以及“应用程序”或“应用框架”一方。 服务方调用应用方,提供环境信息,以及一个回调函数(提供给应用程序用来将消息头传递给服务器方),并接收Web内容作为返回值。 所谓的 WSGI中间件同时实现了API的两方,因此可以在WSGI服务和WSGI应用之间起调解作用;
从WSGI服务器的角度来说,中间件扮演应用程序,而从应用程序的角度来说,中间件扮演服务器。“中间件”组件可以执行以下功能: 重写环境变量后,根据目标URL,将请求消息路由到不同的应用对象。 允许在一个进程中同时运行多个应用程序或应用框架。 负载均衡和远程处理,通过在网络上转发请求和响应消息。 进行内容后处理,例如应用XSLT样式表。 WSGI 的设计确实参考了 Java 的 servlet。http://www.python.org/dev/peps/pep-0333/
uWSGI
uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。 Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换. APP(应用程序),就是开发者写的应用程序,例如django,bottle这些。 记录怎么处理客户端发来的请求的逻辑部分。 WSGI,是一个协议,Python用于Web开发的协议 uWSGI,是一个程序,充当Web服务器或中间件。 如果架构是Nginx+uWSGI+APP,uWSGI是一个中间件。 如果架构是uWSGI+APP,uWSGI是一个服务器 uwsgi,是uWSGI程序实现的一个自有的协议。 Web协议出现顺序: CGI -> FCGI -> WSGI -> uwsgi CGI,最早的协议 FCGI,比CGI快 WSGI,Python专用的协议 uwsgi,比FCGI和WSGI都快,是uWSGI项目自有的协议,主要特征是采用二进制来存储数据,之前的协议都是使用字符串,所以在存储空间和解析速度上,都优于字符串型协议.
很好的一篇文章:
http://www.cnblogs.com/Xjng/p/aa4dd23918359c6414d54e4b972e9081.html