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を2回呼び出す場合(URLをクリックし、5秒間待ってからもう一度クリックする)を除いて、正常に動作します-両方の「応答」が10秒後に到着します(最初のクリックの応答)。