将上一个例子的返回:
return [response_body]
改为:
return response_body
再次运行会发现速度变慢了。这是因此服务器对发送过来的字符串是按单个字节进行迭代的,所以最好对返回的字符串用一个可迭代对象包装一下。
如果返回的这个可迭代对象生成多个字符串,那么正文的长度即为这些字符串长度的总和。
接下来看一个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
from wsgiref.simple_server import make_server
def application(environ, start_response):
response_body = ['%s: %s' % (key, value) for key, value in sorted(environ.items())] response_body = '\n'.join(response_body)
response_body = ['The Beggining\n', '*' * 30 + '\n', response_body, '\n' + '*' * 30 , '\nThe End']
content_length = 0 for s in response_body: content_length += len(s)
status = '200 OK' response_headers = [('Content-Type', 'text/plain'), ('Content-Length', str(content_length))] start_response(status, response_headers)
return response_body
httpd = make_server('localhost', 8051, application) httpd.handle_request()
|