支持分块编码的Python HTTP服务器?
我在寻找一个支持多线程的Python HTTP服务器,并且能够处理分块编码的回复。(也就是说,回复中要有“Transfer-Encoding: chunked”这个设置)。请问,哪个HTTP服务器最适合用来做这个呢?
6 个回答
2
你可以用Python的HTTPServer来实现一个简单的分块服务器,只需要在你的服务函数里加上这一段代码:
def _serve(self, res):
response = next(res)
content_type = 'application/json'
self.send_response(200)
self.send_header('Content-Type', content_type)
self.send_header('Transfer-Encoding', 'chunked')
self.end_headers()
try:
while True:
# This line removed as suggested by @SergeyNudnov
# r = response.encode('utf-8')
l = len(response)
self.wfile.write('{:X}\r\n{}\r\n'.format(l, response).encode('utf-8'))
response = next(res)
except StopIteration:
pass
self.wfile.write('0\r\n\r\n'.encode('utf-8'))
不过我不建议在正式环境中使用这个。
2
Twisted支持分块传输,而且这个过程对你来说是透明的。也就是说,如果你的请求处理程序没有指定响应的长度,Twisted会自动切换到分块传输模式,并且每次调用Request.write的时候,它会生成一个数据块。