Python — параллелизм и многопоточность BaseHTTPServer.HTTPServer

Есть ли способ сделать BaseHTTPServer.HTTPServer многопоточным, как SocketServer.ThreadingTCPServer?


person Ian    schedule 07.03.2010    source источник
comment
Есть ли причина, по которой вам это нужно?   -  person jakebman    schedule 08.03.2010
comment
Потому что мне нужен базовый веб-сервер, способный работать с параллелизмом? Мне также не нужна/не нужна вся инфраструктура, такая как web.py, cherrypy или что-то в этом роде, я просто хочу действительно простой веб-сервер, такой как BaseHTTPServer, который может обрабатывать несколько одновременных запросов.   -  person Ian    schedule 08.03.2010
comment
Используйте Apache и mod_wsgi.   -  person    schedule 19.03.2010
comment
вот ссылка: ссылка, threading, forking   -  person sfossen    schedule 08.04.2010


Ответы (1)


Вы можете просто использовать миксин потоков, используя оба этих класса, чтобы сделать его многопоточным :)

Хотя это не сильно поможет вам в производительности, но, по крайней мере, это многопоточность.

from SocketServer import ThreadingMixIn
from BaseHTTPServer import HTTPServer

class MultiThreadedHTTPServer(ThreadingMixIn, HTTPServer):
    pass
person Wolph    schedule 07.03.2010
comment
Это похоже на a решение.. однако я бы предпочел написать свой собственный сервер, чем использовать что-то медленное.. :( - person Ian; 08.03.2010
comment
Если вы просто ищете хостинг Python, почему бы не использовать существующий http-сервер, такой как nginx, apache или lighttpd? Что касается производительности, то многопоточность позволит вам выполнять несколько одновременных подключений без блокировки, поэтому в случае нескольких одновременных запросов это будет быстрее. Но он по-прежнему будет использовать только 1 процессор. - person Wolph; 09.03.2010
comment
Я не ищу это, я создаю сервер очереди, который принимает входящие запросы (http или аналогичный формат) и выполняет действие на основе запроса. - person Ian; 09.03.2010
comment
вот ссылка: ссылка, threading, forking - person sfossen; 08.04.2010
comment
@Ian: поскольку вы создаете сервер очередей, вы можете попробовать какую-нибудь другую технологию. Взгляните на библиотеку событий: wiki.secondlife.com/wiki/Eventlet - person Wolph; 09.04.2010
comment
Для быстрых импов POC это отличный способ позволить нескольким соединениям не наступать на буферы связи друг друга. Спасибо, что поделился. - person Buzz Moschetti; 24.09.2015