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