Конфигурация Nginx для длительных задач

У меня есть веб-приложение, которое выполняет некоторый лингвистический анализ текстов, отправленных пользователем. Это довольно задача с интенсивным использованием памяти и обычно занимает продолжительный период времени (например, до 3 минут для обработки 30 файлов). Я использую функцию Django StreamingHttpResponse для выполнения этой работы, но заметил, что nginx отбрасывает запрос пользователя после обработки примерно 7 файлов (менее 50 секунд). Я попытался настроить параметры keep_alive для nginx и Gunicorn, но, похоже, это не сработало. Интересно, может ли кто-нибудь из присутствующих дать мне несколько советов по этому поводу?

Мне также интересно, как лучше всего решить задачу, требующую много времени для вычисления? Асинхронно?

0
задан 11 January 2016 в 02:48
2 ответа
I'm also wondering what is the best approach to tackle a task that takes a long time to compute? Asynchronously?

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

Между тем, отдельный процесс выбирает новые задачи из рабочей очереди, обрабатывая каждую независимо от того, что делает пользователь. Существует множество таких систем очередей, например Amazon AWS SQS:

https://aws.amazon.com/sqs/

0
ответ дан 5 December 2019 в 10:59

Я вижу, что никто не ответил, поэтому я набрал ваш вопрос в Google и нашел эту страницу . Вы пытались увеличить все применимые тайм-ауты, как это предлагает? Кажется, это первое, что нужно сделать.

0
ответ дан 5 December 2019 в 10:59

Теги

Похожие вопросы