WSGI
WSGI是将Python服务器端程序连接到Web服务器的通用协议。
由于WSGI的通用性,出现了独立的WSGI程序,例如uWSGI和Apache的mod_wsgi。
WSGI的全称为Web Server Gateway Inter-face,也可称作Python Web Server Gateway Inter-face,开始于2003年,为Python语言定义Web服务器和服务器端程序的通用接口规范。
因为WSGI在Python中的成功,所以其他语言诸如Perl和Ruby也定义了类似WSGI作用的接口规范。
WSGI的作用如图5.9所示。
从图5.9中可见WSGI的接口分为两个:一个是与Web服务器的接口,另一个是与服务器端程序的接口。
WSGI Server与Web服务器的接口包括uwsgi、fast cgi等,服务器端程序的开发者无须学习这部分的详细内容。
服务器端的开发者需要关注的是WSGI与服务器程序的接口。
------------------------------------------------------------------------------------------------
WSGI的服务器程序的接口非常简单,以下是一个服务器端程序的例子,将该文件保存为webapp.py:
def application(environ, start_response): start_response('200 OK', [('Content-Type', 'text/html')]) return '<b>Hello, world!<、b>'
该代码只定义了一个函数application,所有来自Web服务器的HTTP请求都会由WSGI服务转换为对该函数的调用。
该示例的application函数中没有复杂的处理,只是通过start_response返回了状态码,并通过return返回了一个固定的HTTP消息体。
与该服务器端程序相对应的是下面的WSGI Server程序:
#coding=utf-8 #引入Python的WSGI包 from wsgiref.simple_server import make_server #引入服务器端程序的代码 from webapp import application #实例化一个监听8080端口的服务器 server=make_server('', 8080, application) #开始监听HTTP请求: server.serve_forever()
将该WSGI Server的程序保存为wsgi_server.py,通过下面的命令即可启动一个Web服务器,该服务器对所有的请求都返回Hello World页面:
python wsgi_server.py
注意:
虽然WSGI的设计目标是连接标准的Web服务器(Ng-inx、Apache等)与服务器端程序,但WSGI Server本身也可以作为Web服务器运行。
由于性能方面的原因,该服务器一般只做测试使用,不能用于正式运行。
优质内容筛选与推荐>>