HTTPServer с большей степенью контроля в Python - PullRequest
0 голосов
/ 27 февраля 2019

У меня довольно простая проблема, которую я хотел бы решить в Python.

Я хотел бы, чтобы веб-сервер имел следующее поведение: если он получает запрос POST для /work, то он должен добавитьэто в рабочую очередь и выполнить некоторую функцию на прикрепленных данных.Если он получает запрос POST для /cancel, он должен отменить текущую задачу.

К сожалению, единственный способ получить BaseHTTPRequestHandler для обработки нескольких запросов - это использовать ThreadingMixIn, но это кажется неоправданно сложным, так как мне приходится использовать набор блокировок, чтобы предотвратить одновременное выполнение нескольких рабочих задач.

Я попытался использовать BaseHTTPRequestHandler без ThreadingMixIn и просто раскрутить потоки вdo_POST, но это не сработало, поскольку, по-видимому, BaseHTTPRequestHandler закрывает соединение, когда возвращается функция do_POST.

В идеале я ищу интерфейс, который дает мне возможность закрыть соединениеклиенту на моих собственных условиях, поэтому я могу сделать это в рабочем потоке и самостоятельно управлять очередью, вместо того чтобы обойти поведение ThreadingMixIn в этом отношении.

...