concurrent.futures
(Python 3.2以降のstdlibで)からプールを使用できます:
from BaseHTTPServer import HTTPServer, test
from SimpleHTTPServer import SimpleHTTPRequestHandler
from SocketServer import ThreadingMixIn
from concurrent.futures import ThreadPoolExecutor # pip install futures
class PoolMixIn(ThreadingMixIn):
def process_request(self, request, client_address):
self.pool.submit(self.process_request_thread, request, client_address)
def main():
class PoolHTTPServer(PoolMixIn, HTTPServer):
pool = ThreadPoolExecutor(max_workers=40)
test(HandlerClass=SimpleHTTPRequestHandler, ServerClass=PoolHTTPServer)
if __name__=="__main__":
main()
ご覧のとおり、スレッドのケースの実装はかなり簡単です。
保存するとserver.py
、次のように実行できます。
$ python -mserver
このコマンドは、最大 40 個のスレッドを使用して で要求を処理しhttp://your_host:8000/
ます。
の主な使用例HTTPServer
は、テスト目的です。