WSGI 是一个规范(协议),定义了 Web服务器 如何与 Python应用程序 进行交互。
WSGI 协议约定的 application 必须是一个可调用的对象,它接受两个参数的输入,一个是cgi服务器的环境变量,另外一个参数是一个函数,并且该 application 返回的是一个可迭代对象,这个对象即发送给客户端的 body 中的内容。
下面是一个标准的 wsgi application 或者说是 wsgi app
from wsgiref.simple_server import make_server
def simple_app(environ, start_response):
status = '200 OK'
headers = [('Content-type', 'text/plain; charset=utf-8')]
start_response(status, headers)
return ["Hello, World".encode()]
# Python 2中直接 return ["Hello, World".encode()]
# 以下代码非 wsgi app 所必须
if __name__ == '__main__':
server = make_server('localhost', 8000, simple_app)
print("Serving HTTP on port 8000...")
server.serve_forever()
# server.handle_request()
# 处理一个request之后立即退出程序
Python的Web框架,本质上来说都是一个wsgi application。
在执行了 make_server 方法后,就已经有了一个处于监听状态的服务器实例了,接下来要让服务器具有处理接受请求的能力,这就轮到 handle_request 方法发挥作用了。
网友评论