당신은에서 풀을 사용할 수있는 수행 할 작업을 완료 (CTRL + C 뒤처리)에 가입 할이 문제를 해결하는 프로젝트를 시작했습니다 concurrent.futures
는 (파이썬 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()
오히려 간단하다. 이 명령은 http://your_host:8000/
에 요청을 처리하기 위해 40 개 스레드 개까지 사용
$ python -mserver
:
당신이 server.py
에 저장할 경우에 당신은으로 실행할 수 있습니다.
HTTPServer
의 주요 사용 사례는 테스트 용입니다.
출처
2012-08-02 17:56:49
jfs
https://pypi.python.org/pypi/Spawning/ –
과 같은 이벤트 릿 기반 서버와 비교해야 할 수도 있습니다. 더 이상 py 2.7을 사용하지 않습니다. 데모를 시도 할 때이 오류가 발생합니다. pickle.PicklingError : pickle : thread.lock으로 찾을 수 없습니다. –
OriginalCliche
py 2.7을 사용하고 있으며 코드가 피클하지 않습니다. –