APScheduler не работает с UWSGI

Я использую Django 1.8 и APScheduler для запуска рабочих через определенные промежутки времени. Он отлично работает с сервером разработки Django (например, ./manage.py runserver), но когда я настраиваю проект с UWSGI и master=true, рабочий UWSGI не может получить никаких запросов от Nginx, а браузер показывает ошибку 504 Gateway Timed-out после 1-2-минутной загрузки.

Когда я меняю его на master=false, все в порядке.

Вот моя конфигурация UWSGI:

[uwsgi]
chdir             = /var/www/projectname/backend/projectname
module         = projectname.wsgi:application
wsgi-file        = /var/www/projectname/backend/projectname/projectname/wsgi.py
uid                = root
gid                = root
virtualenv     = /var/www/venv/
master          = false
processes    = 4
socket          = :8080
logto             = /var/www/projectname/log/uwsgi.log
env               = DJANGO_SETTINGS_MODULE=projectname.settings
enable-threads = true

Обратите внимание, что я использую AppConfig Django для однократного запуска планировщика. Есть ли проблема с моей конфигурацией UWSGI или это из-за Django?


person Afshin Mehrabani    schedule 03.10.2015    source источник


Ответы (1)


Рассмотрите возможность использования мулов uWSGI для фоновых задач. Рабочие обрабатывают запросы, а мулы обрабатывают более длительные операции.

person Freek Wiekmeijer    schedule 03.10.2015
comment
Идея мула — это длительный процесс, независимый от рабочих. Вы можете запускать планировщики внутри мулов. - person Freek Wiekmeijer; 03.10.2015
comment
Нужно ли просто включить мулов, чтобы использовать его в Django? Нужно ли что-то делать для регистрации на работу, чтобы использовать мула? - person robnardo; 08.10.2020
comment
Если вы запускаете dango в uWSGI, предпочтительнее использовать мулы uWSGI. Django может иметь свои собственные фоновые процессы, но они будут реплицироваться в число рабочих процессов uWSGI. - person Freek Wiekmeijer; 08.10.2020