Django. Асинхронность: если выполняется длительный запрос, весь сервер висит у остальных пользователей?

Здравствуйте. Изучаю джанго, все устраивает пока дело не доходит до обработки длительных запросов (связка nginx-uwsgi-django). Получается если пользователь выполняет длительный запрос (происходит запрос к базе), весь сервер висит у остальных пользователей. Не могу понять как правильно организовать настройку сервера, на что обращать внимания (потоки, процессы). Единственный ли выход (без извращений) использовать celery везде на длительных запросах. Или использовать gunicorn (там прочитал есть асинхронность). Спасибо за помощь.
  • Вопрос задан
  • 4292 просмотра
Пригласить эксперта
Ответы на вопрос 2
soshnikov
@soshnikov
Если вопрос относится к manage.py runserver, тогда все верно.
Но это отладочный сервер, который нельзя использовать на продакшене.
Для боевого сервера есть разные варианты запуска и настройка параметров у них разная, но в общем сводится к количеству одновременно обрабатываемых запросов.
То из-за чего вы не поняли друг-друга с @sim3x - это убийство сервером слишком долгих обработчиков запроса. Как раз, чтобы не исчерпать количество воркеров, обрабатывающих запросы клиентов.
В общем гуглите на тему запуска вофнго на боевых серверах. uwsgi, gunicorn etc
Ответ написан
Комментировать
@KTOTAM Автор вопроса
Как то глупо получилось. В пятницу выставил несколько воркеров, по прежнему сервер подвисал. Сегодня пришел всё работает, тоесть и пользователь ждет формирование отчета и другие могут работать с сайтом. Для надежности добавил еще пару потоков. Видимо забыл перегрузить настройки. Ответившим спасибо. Я так понимаю далее правильнее будет оборачивать длительные запросы в celery.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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