Можно ли перезапустить сервер разработки Django по сигналу?
Я хотел бы иметь возможность перезапустить команду manage.py runserver Django, используя сигнал (как в kill -HUP PID). Поддерживает ли Django вообще это? SIGHUP, SIGINT, SIGTERM просто выйдите из процесса.
Пробовал pkill -HUP, не получилось.
Можно ли перезапустить сервер разработки Django с помощью сигнала?
Короткий ответ - нет.
Более подробный ответ заключается в том, что Django сам по себе не имеет встроенной поддержки обработки сигналов POSIX (в частности, SIGHUP), поэтому поведение будет соответствовать поведению обработки сигналов Python по умолчанию.
(Сигналы Django - это совершенно другой механизм, который здесь не уместен.)
Альтернативы:
Самый простой способ перезапустить сервер разработки (т.е.
manage.py runserver) - это прикоснуться к одному из исходных файлов вашего приложения.В рабочей среде вы, как правило, запускаете несколько рабочих процессов django с сервера
gunicorn. В этом случае вы можете по отдельности отключить рабочие процессы сигналом, и gunicorn восстановит их. В качестве альтернативы вы можете отправить сигнал HUP процессу gunicorn, и он запустит новых рабочих (с последним кодом / конфигурациями), а затем корректно завершит работу старых рабочих.Я думаю, если бы вы были действительно предприимчивы, вы могли бы попробовать добавить обработчик сигналов Python для SIGHUP и попытаться заставить его перезапустить фреймворк django в процессе1.
Список использованной литературы:
<время работы/><поддержка>1 - Как? Я не знаю! Может быть, посмотрите, что делает механизм "перезапуска при изменении кода"? Надевай снаряжение искателя приключений, бери мачете и отправляйся в джунгли ...