@huko

Как сделать рестарт django сервера из приложения?

Так сложилось, что в одном из приложений после обновление данных нужно перечитать все настройки через рестарт сервера. Рестартую через собственную функцию обновление файла wsgi.py, проблема в том, что если вызывать функцию из views.py то сервер на короткое время уходит в даун который я успешно и ловлю (ERR_EMPTY_RESPONSE). Не пойму как и куда вставить какой-нибудь time.sleep(2) что-бы этого избежать.
  • Вопрос задан
  • 885 просмотров
Пригласить эксперта
Ответы на вопрос 3
suguby
@suguby
программист, python, django, mysql, git, hg, linux
ИМХО кривая архитектура - как можно давать перестартовывать сервер клиенту? а если вас хакнут и поставят в цикле рестарт?
Можно подробнее про "Так сложилось, что в одном из приложений после обновление данных нужно перечитать все настройки через рестарт сервера" - копать нужно тут. Может нужно переменную часть хранить не в настройках, а в базе, к примеру?
Ответ написан
sim3x
@sim3x
Такое может понадобиться, только если генерить код и писать его в файл "налету"
// чисто теоретически есть вариант с uWSGI. Установить touch-reload=/path/to/settings.py
uwsgi-docs.readthedocs.org/en/latest/Management.html

There are several ways to make uWSGI gracefully restart.

# using kill to send the signal
kill -HUP `cat /tmp/project-master.pid`
# or the convenience option --reload
uwsgi --reload /tmp/project-master.pid
# or if uwsgi was started with touch-reload=/tmp/somefile
touch /tmp/somefile


Если же создается отдельное приложение, то лучше посмотреть в сторону скриптов деплоя
Ответ написан
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
Можно через sys.exec (ну и через sudo), вот только правильно вам говорят, что какой-то вы гиблый путь выбрали.
Научите приложение эти настройки обновлять на лету.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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