Веб-приложение, которое я разрабатываю, должно выполнять задачи, которые слишком длинные для выполнения в течение цикла http запрос / ответ. Обычно пользователь выполняет запрос, сервер принимает этот запрос и, среди прочего, запускает некоторые сценарии для генерации данных (например, рендеринг изображений с помощью povray).
Конечно, эти задачи могут занимать много времени, поэтому сервер не должен зависать, чтобы сценарии завершили выполнение перед отправкой ответа клиенту. Поэтому мне нужно выполнить асинхронное выполнение сценариев и дать клиенту «ресурс здесь, но не готов» и, вероятно, сообщить ему конечную точку ajax для опроса, чтобы он мог извлечь и отобразить ресурс, когда будет готов.
Теперь мой вопрос не относится к дизайну (хотя мне бы очень понравились любые подсказки по этому поводу). Мой вопрос: существует ли система для решения этой проблемы, поэтому я не изобретаю квадратное колесо? Если бы мне пришлось это сделать, я бы использовал диспетчер очереди процессов для отправки задачи и поставил бы конечную точку HTTP для определения состояния, что-то вроде «в ожидании», «прервано», «выполнено» для клиента ajax, но если что-то похожее уже существует специально для этой задачи, мне бы в основном это понравилось.
Я работаю в Python + Django.
Редактировать : обратите внимание, что основная проблема здесь не в том, как сервер и клиент должны согласовывать и обмениваться информацией о состоянии задачи.
Проблема в том, как сервер обрабатывает отправку и постановку в очередь очень длинных задач. Другими словами, мне нужна лучшая система, чем когда мой сервер отправляет сценарии на LSF . Не то чтобы это не сработало, но я думаю, что это слишком много ...
Редактировать 2 : Я добавил награду, чтобы посмотреть, смогу ли я получить какой-то другой ответ. Я проверил pyprocessing, но не могу выполнить отправку задания и повторно подключиться к очереди на более позднем этапе.