0
我想在python中创建多线程的Web服务器,但请求被逐一处理。在搜索几个小时后,我发现这个link,但核准的答案似乎是不正确的,因为那里的请求也是一个接一个地处理的。 下面是代码:Python多线程HTTP服务器不工作
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
from SocketServer import ThreadingMixIn
import threading
from time import sleep
class Handler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.end_headers()
sleep(5)
message = threading.currentThread().getName()
self.wfile.write(message)
self.wfile.write('\n')
return
class ThreadedHTTPServer(ThreadingMixIn, HTTPServer):
"""Handle requests in a separate thread."""
if __name__ == '__main__':
server = ThreadedHTTPServer(('localhost', 8080), Handler)
print 'Starting server, use <Ctrl-C> to stop'
server.serve_forever()
我添加“睡眠(5)”为5秒延迟来处理该请求。之后,我发送多个请求,但所有请求都被逐个处理,每个请求花费5秒钟。我无法找到原因。帮我。
你为什么要自己编写一个Web服务器?已经有很多了。使用gunicorn或uwsgi。 –
你的观察结果不正确。上面显示的代码(当您修复缩进!)按预期工作;它可以开始在新线程中提供GET请求,而其他(s)仍在处理中。我不知道你是如何得出结论,它不起作用。 –
@IrmendeJong先生,缩进没有问题。我进行的测试给了我一个又一个的结果。你可以尝试上面的代码。 –