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服务器运行。

由于性能方面的原因,该服务器一般只做测试使用,不能用于正式运行。

 

posted @ 2018-03-01 10:55  丰study  阅读(114)  评论(0)    收藏  举报