【发布时间】:2013-10-23 08:52:37
【问题描述】:
我正在尝试使用 BaseHttpServer 和 ThreadingMixIn 创建一个多线程 Web 服务器(如在各种示例中所见)。伪代码类似于:
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'
它工作正常,除非我调用 url 两次暂停 5 秒(单击 URL,等待 5 秒,然后再单击一次) - 两个“响应”都在 10 秒后到达(第一次点击的响应)。
【问题讨论】:
-
这段代码似乎不完整我已经尝试用
sleep编写自己的do_GET并且它工作正常 -
你能把你的
do_GET发给我看看吗? -
感谢您的帮助。结果我的服务器按预期工作,但客户端给我带来了麻烦。
标签: python multithreading