python中WSGI是什么

 

uswgi学习文档

http://uwsgi-docs-cn.readthedocs.io/zh_CN/latest/WSGIquickstart.html

WSGI是什么?

WSGI,全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接口。自从 WSGI 被开发出来之后,许多其它语言中也出现了相似接口。html

WSGI 的官方定义是,the Python Web Server Gateway Interface。从名字就能够看出来,这东西是一个Gateway,也就是网关。网关的做用就是在协议之间进行转换。python

WSGI 是做为 Web 服务器与 Web 应用程序或应用框架之间的一种低级别的接口,以提高可移植 Web 应用开发的共同点。WSGI 是基于现存的 CGI 标准而设计的。nginx

不少框架都自带了 WSGI server ,好比 Flask,webpy,Django、CherryPy等等。固然性能都很差,自带的 web server 更多的是测试用途,发布时则使用生产环境的 WSGI server或者是联合 nginx 作 uwsgi 。web

  •  
    也就是说,WSGI就像是一座桥梁,一边连着web服务器,另外一边连着用户的应用。可是呢,这个桥的功能很弱,有时候还须要别的桥来帮忙才能进行处理。WSGI 的做用如图所示:

WSGI的做用

WSGI有两方:“服务器”或“网关”一方,以及“应用程序”或“应用框架”一方。服务方调用应用方,提供环境信息,以及一个回调函数(提供给应用程序用来将消息头传递给服务器方),并接收Web内容做为返回值。服务器

所谓的 WSGI中间件同时实现了API的两方,所以能够在WSGI服务和WSGI应用之间起调解做用:从WSGI服务器的角度来讲,中间件扮演应用程序,而从应用程序的角度来讲,中间件扮演服务器。“中间件”组件能够执行如下功能:网络

  • 重写环境变量后,根据目标URL,将请求消息路由到不一样的应用对象。
  • 容许在一个进程中同时运行多个应用程序或应用框架。
  • 负载均衡和远程处理,经过在网络上转发请求和响应消息。
  • 进行内容后处理,例如应用XSLT样式表。

WSGI 的设计确实参考了 Java 的 servlet。http://www.python.org/dev/peps/pep-0333/ 有这么一段话:app

By contrast, although Java has just as many web application frameworks available, Java's "servlet" API makes it possible for applications written with any Java web application framework to run in any web server that supports the servlet API.负载均衡

来源:http://www.nowamagic.net/academy/detail/1330310框架

相关文章
相关标签/搜索