Gunicorn только начинающий работник, когда какой-то запрос отправлен - PullRequest
0 голосов
/ 03 сентября 2018

Я настроил gunicorn для 5 рабочих. Однако запускается только 1, остальные как в спящем состоянии. Только когда я попытаюсь войти в систему, то есть им будет отправлен запрос, они запускаются / запускаются впервые. Ниже приведен конфиг.

$VIRT_ENV/gunicorn -c config.py utrade.wsgi:application \
                          --preload \
                          --log-level=debug \
                          --timeout=30 \
                          --access-logfile=- \
                          --access-logformat="%(r)s %(s)s" \
                          --log-file=-

Внутри файла представлений django есть код инициализации рабочего торнадо, есть некоторая зависимость, где я хочу, чтобы все процессы торнадо были запущены до входа пользователя в систему. Чтобы было понятно, скажем, если я добавлю print('Hello') в мой файл django views. Он не печатается работником, пока не будет получен запрос.

Как я могу заставить оружейных заводить всех рабочих, а не ждать запроса? Я попробовал флаг preload, но это не помогло.

config.py

bind = 'unix:/code/internal.utradesolutions.com/tanmay.garg/web/web/utrade/run/gunicorn.sock' 
workers = 5 
daemon=True

1 Ответ

0 голосов
/ 03 сентября 2018

Вам необходимо использовать диспетчер процессов (например, supervisor) для управления процессом торнадо отдельно от gunicorn, который выполняет ваш процесс wsgi.

Что касается preload, это оптимизация, которая загружает ваш код перед началом работы рабочих ( docs ):

Загрузка кода приложения перед разветвлением рабочих процессов.

За счет предварительной загрузки приложения вы также можете сэкономить некоторые ресурсы ОЗУ как ускорить время загрузки сервера. Хотя, если вы отложите заявку загружая каждый рабочий процесс, вы можете перезагрузить код своего приложения легко перезапустить работников.

...