Я пишу приложение Django, которое должно выполнять длительные задачи async. Первоначальная идея состояла в том, чтобы запустить подпроцесс из представления, которое выполняет эту работу, и отслеживать прогресс в других представлениях.Запуск подпроцесса в приложении uwsgi
Идея отлично работает, когда приложение запускается через manage.py runserver
, но это не происходит при запуске под управлением uwsgi. Детский процесс запущен, но после того, как представление вернет, uwsgi ждет завершения дочернего процесса, что нарушает всю идею.
Я могу видеть детали запроса в журнале uwsgi (количество генерируемых байт и т. Д.), Но сокет не закрыт, поэтому браузер тоже ждет.
Я видел другие альтернативы для запуска задач async, например. сельдерей, но до сих пор я потратил больше времени на то, чтобы настроить сельдерей, чем я потратил на эту задачу. Если есть какой-либо другой способ, я буду рад услышать, как вы его решили.
Вау, спасибо! Полезная ссылка – Maxim