本文记录学习WSGI时的一些知识点,值得后续学习中注意。
wsgi应用接口只要是一个可调用的对象就行,这个可调用的对象需要:
1. 接受两个位置参数:
a. 包含CGI形式变量的字典;
b. 应用调用的回调函数,该回调函数的作用是将HTTP响应的状态码和header返回给server。
2. 将响应body部分的内容作为包裹在一个可迭代的对象中的(若干)字符串。
说明:
1. application 的第一个参数env是一个字典,里面包含了CGI形式的环境变量,该字典是由server基于客户请求填充。
2. headers在构建的时候,必须遵循以下规则:
[(Header name1, Header value1), (Header name2, Header value2),]
响应header和响应HTTP状态码通过应用的第二个参数即回调函数发回给server。
3.body在构建的时候,必须遵循以下规则:
[response_body]
即响应body必须被包裹在可迭代的对象中,同时通过return 语句返回给server.
下面是wsgi.org官方教程中得到一个例子:
注意environ参数的含义,start_response函数的作用,response_headers和status是由谁返回给server的,response_body需要什么样的形式,如何返回给server等。
from wsgiref.simple_server import make_server def application( environ, start_response): # response_body in a list response_body = [‘%s:%s‘ %(key, value) for key, value in sorted(environ.items())] response_body = ‘\n‘.join(response_body) response_body = [‘The Begining\n‘, ‘*‘ * 30 + ‘\n‘, response_body, ‘\n‘ + ‘*‘ * 30 , ‘\nThe End‘] content_length = 0 for s in response_body: content_length += len(s) #status code and response_headers status = ‘200 OK‘ response_headers =[(‘Content-Type‘, ‘text/plain‘), (‘Content-Length‘, str(content_length))] # use callback function to send back status code # and response headers start_response(status, response_headers) # return response body thruogh return statement return response_body httpd = make_server(‘localhost‘,8051,application) httpd.handle_request()
时间: 2024-10-12 16:46:24