BaseHttpServer
我正在尝试使用and创建一个多线程 Web 服务器ThreadingMixIn
(如在各种示例中所见)。伪代码类似于:
class Handler(BaseHTTPRequestHandler):
def do_GET(self):
pass
def do_POST(self):
pass
class ThreadedHTTPServer(ThreadingMixIn, HTTPServer):
"""Handle requests in a separate thread."""
if __name__ == '__main__':
server = ThreadedHTTPServer(('localhost', 9999), Handler)
print 'Starting server, use <Ctrl-C> to stop'
server.serve_forever()
这可以按预期工作,但我的问题是并非每个请求都有一个线程,而是每个 URL 都完成了线程化。我已经像这样测试过它:我有一个绑定到执行以下方法的 URL:
import time
import datetime
def request_with_pause(self):
print datetime.datetime.now().strftime("%H:%M:%S.%f"), 'REQUEST RECEIVED'
time.sleep(10)
print datetime.datetime.now().strftime("%H:%M:%S.%f"), 'SENT RESPONSE'
它工作正常,除非我在暂停5 秒的情况下调用 url 两次(单击 URL,等待 5 秒并再次单击它) - 两个“响应”都在 10 秒后到达(第一次单击的响应)。