用来为server程序和app/framework程序做连接桥梁的,使server和app/framework各自发展,任意组合
上图是python3.4标准库里面,关于wsgiserver的实现。从图中可知,所谓wsgi的server的主要工作是运动tcp进程,解析http协议部分参数;然后交给应用程序app具体处理。
所以可以理解wsgi协议,就是http server和app之间的函数接口,接口的形式是 app(enviro, start_response)
用程序简单表示如下:
def make_server(
host, port, app, server_class=WSGIServer,
handler_class=WSGIRequestHandler
):
"""Create a new WSGI server listening on `host` and `port` for `app`"""
server = server_class((host, port), handler_class)
server.set_app(app)
return server
所以,开发一个python web服务,server和python程序之间基本都会是wsgi协议。
上面代码中,server_class部署时候基本都是apache/nginx,
handler_class之类的由于基本不做具体事情,用标准库中的即可
app则是最关键的地方。解析请求、处理请求、回复请求都在这里。