Response IterableΒΆ
If the last script worked change the return line from:
return [response_body]
to:
return response_body
Then run it again. In an older machine it is possible to notice it is slower. What happens is that the server iterated over the string sending a single byte at a time to the client. So don’t forget to wrap the response in a better performance iterable like a list.
If the iterable yields more than one string the response body length will be the sum of all the string’s lengths like in this script
:
#! /usr/bin/env python
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)
# Adding strings to the response body
response_body = [
'The Beggining\n',
'*' * 30 + '\n',
response_body,
'\n' + '*' * 30 ,
'\nThe End'
]
# So the content-lenght is the sum of all string's lengths
content_length = sum([len(s) for s in response_body])
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()
Listening at http://localhost:8051/