У меня довольно простая проблема, которую я хотел бы решить в Python.
Я хотел бы, чтобы веб-сервер имел следующее поведение: если он получает запрос POST для /work
, то он должен добавитьэто в рабочую очередь и выполнить некоторую функцию на прикрепленных данных.Если он получает запрос POST для /cancel
, он должен отменить текущую задачу.
К сожалению, единственный способ получить BaseHTTPRequestHandler
для обработки нескольких запросов - это использовать ThreadingMixIn
, но это кажется неоправданно сложным, так как мне приходится использовать набор блокировок, чтобы предотвратить одновременное выполнение нескольких рабочих задач.
Я попытался использовать BaseHTTPRequestHandler
без ThreadingMixIn
и просто раскрутить потоки вdo_POST
, но это не сработало, поскольку, по-видимому, BaseHTTPRequestHandler
закрывает соединение, когда возвращается функция do_POST
.
В идеале я ищу интерфейс, который дает мне возможность закрыть соединениеклиенту на моих собственных условиях, поэтому я могу сделать это в рабочем потоке и самостоятельно управлять очередью, вместо того чтобы обойти поведение ThreadingMixIn
в этом отношении.