3

BaseHttpServerandを使用してマルチスレッド 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秒後に到着します(最初のクリックの応答)。

4

1 に答える 1