Web服务器网关接口(WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。自从WSGI被开发出来以后,许多其它语言中也出现了类似接口。
Web 服务器网关接口(Python Web Server Gateway Interface,缩写为 WSGI)是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接口。自从 WSGI 被开发出来以后,许多其它语言中也出现了类似接口。
发展背景
以前,如何选择合适的 Web 应用程序框架成为困扰 Python 初学者的一个问题,这是因为,一般而言,Web 应用框架的选择将限制可用的 Web 服务器的选择,反之亦然。那时的 Python 应用程序通常是为 CGI,FastCGI,mod_python 中的一个而设计,甚至是为特定 Web 服务器的自定义的 API 接口而设计的。
WSGI(有时发音作’wiz-gee’)是作为 Web 服务器与 Web 应用程序或应用框架之间的一种低级别的接口,以提升可移植 Web 应用开发的共同点。WSGI 是基于现存的 CGI 标准而设计的。
规范概览
WSGI 区分为两个部分:一为“服务器”或“网关”,另一为“应用程序”或“应用框架”。在处理一个 WSGI 请求时,服务器会为应用程序提供环境信息及一个回调函数(Callback Function)。当应用程序完成处理请求后,透过前述的回调函数,将结果回传给服务器。
所谓的 WSGI 中间件同时实现了 API 的两方,因此可以在 WSGI 服务器和 WSGI 应用之间起调解作用:从 Web 服务器的角度来说,中间件扮演应用程序,而从应用程序的角度来说,中间件扮演服务器。“中间件”组件可以执行以下功能:
重写环境变量后,根据目标 URL,将请求消息路由到不同的应用对象。允许在一个进程中同时运行多个应用程序或应用框架。负载均衡和远程处理,通过在网络上转发请求和响应消息。进行内容后处理,例如应用 XSLT 样式表。