【发布时间】:2014-04-20 16:23:08
【问题描述】:
我尝试使用线程在 Python 中创建 HTTP 服务器:
from socketserver import ThreadingMixIn
from http.server import HTTPServer, BaseHTTPRequestHandler
import time, threading
class ThreadingServer(ThreadingMixIn, HTTPServer):
pass
class Handler(BaseHTTPRequestHandler):
def do_GET(self):
print("do")
time.sleep(10)
message = threading.currentThread().getName()
self.wfile.write(message)
self.wfile.write('\n')
if __name__ == "__main__":
httpd = ThreadingServer( (host, port), Handler)
httpd.serve_forever()
服务器运行良好,但如果两个请求是同一时间,它们是按顺序执行的。 所以第二个请求在第一个请求完成之前不会执行。
【问题讨论】:
-
当您说“它们是按顺序执行的”时:如果您发送两个请求(一个接一个地很快),两个请求都需要大约 20 秒才能返回吗?
-
问题是
ThreadingMixIn正在对您的处理程序进行排序。不幸的是,版主删除了我的答案,即使您的问题不是完全重复的。我会尝试再次发布。
标签: python multithreading basehttpserver