Web服务器网关接口(Web Server Gateway Interface,缩写为WSGI)是为
Python语言定义的
Web服务器和Web应用程序或
框架之间的一种简单而通用的
接口。自从WSGI被开发出来以后,许多其它语言中也出现了类似接口。
简介
Web服务器
网关接口(Web Server Gateway Interface,缩写为WSGI)是Python应用程序或框架和Web服务器之间的一种接口,已经被广泛接受, 它已基本达成它的可移植性方面的目标。
WSGI 没有官方的实现, 因为WSGI更像一个协议. 只要遵照这些协议,WSGI应用(Application)都可以在任何服务器(Server)上运行, 反之亦然。
WSGI标准在 PEP 333 中定义并被许多框架实现,其中包括现广泛使用的Django框架。
发展背景
以前,如何选择合适的Web应用程序框架成为困扰Python初学者的一个问题,这是因为,一般而言,
Web应用框架的选择将限制可用的
Web服务器的选择,反之亦然。那时的Python应用程序通常是为
CGI,
FastCGI,
mod_python中的一个而设计,甚至是为特定Web服务器的自定义的API接口而设计的。
WSGI(有时发音作'wiz-gee')是作为Web服务器与Web应用程序或应用框架之间的一种低级别的
接口,以提升可移植Web应用开发的共同点。WSGI是基于现存的
CGI标准而设计的。
特点
Python Paste - WSGI底层工具集. 包括多线程, SSL和 基于Cookies, sessions等的验证(authentication)库. 可以用Paste方便地搭建自己的Web框架。
WSGI:Python Web Server Gateway Interface v1.0
它是 PEP3333中定义的(PEP3333的目标建立一个简单的普遍适用的服务器与Web框架之间的接口)
WSGI是Python应用程序或框架和Web服务器之间的一种接口
WSGI被广泛接受, 已基本达成它了可移植性方面的目标
在Guido的
Blog 中反复提及, 个人认为WSGI是Python Web方面最Pythonic的
规范概览
WSGI区分为两个部分:一为“
服务器”或“网关”,另一为“应用程序”或“应用框架”。在处理一个WSGI请求时,服务器会为应用程序提供环境信息及一个回调函数(Callback Function)。当应用程序完成处理请求后,透过前述的回调函数,将结果回传给服务器。
所谓的WSGI中间件同时实现了API的两方,因此可以在WSGI服务器和WSGI应用之间起调解作用:从Web服务器的角度来说,中间件扮演应用程序,而从应用程序的角度来说,中间件扮演服务器。“中间件”组件可以执行以下功能:
示例程序
用
Python语言写的一个符合WSGI的“
Hello World”应用程序如下所示:
其中
调用应用程序示例
调用一个程序并获取它的应答消息的例子如下所示:
WSGI兼容的应用和框架
影响