uwsgiconf 0.23.0 и «Режим обслуживания»
О новой версии uwsgiconf с поддержкой активации режима обслуживания через административную панель Django.
Хорошая новость для любителей uWSGI и Django. Вчера занёс в uwsgiconf возможность уводить приложение в режим обслуживания через административный интерфейс Джанго.
Для активации возможности в
После этого в админке, в разделе «uwsgiconf — Обслуживание» можно нажать кнопку и uWSGI перезагрузится, а вместо вашего wsgi-приложения пользователям станет отвечать приложение-заглушка, говорящее, что сервис временно недоступен.
Что нам даёт описываемый режим?
При помощи него, мы
То есть, режим обслуживания может быть полезен при мастшабных миграциях, когда бд нужно максимально разгрузить.
Да, фактически это запланированный, управляемый даунтайм, но и такое иногда необходимо.
Ограничения:
Приятного обслуживания.
Для активации возможности в
uwsgicfg.py
добавляем: # Активируем поддержку режима обслуживания.
# uWSGI будет следить за файлом /tmp/maintain. Если он появится,
# то uWSGI перезагрузится и перейдёт в режим обслуживания.
# Если потом файл удалить, то, перезагрузившись, uWSGI выйдет из режима обслуживания.
section.configure_maintenance_mode(trigger='/tmp/maintain', response='app')
После этого в админке, в разделе «uwsgiconf — Обслуживание» можно нажать кнопку и uWSGI перезагрузится, а вместо вашего wsgi-приложения пользователям станет отвечать приложение-заглушка, говорящее, что сервис временно недоступен.
На заметку
Кстати, приложение-заглушку можно указать какое-нибудь своё, а можно использовать идущее в комплекте с
uwsgiconf
(как в примере выше).Что нам даёт описываемый режим?
При помощи него, мы
- не даём пользователям взаимодействовать с приложением, снимаем нагрузку с сервера;
- деактивируем фоновые задания (таймеры, планировщик, сигналы), а значит и они в бд не будут лезть.
То есть, режим обслуживания может быть полезен при мастшабных миграциях, когда бд нужно максимально разгрузить.
Да, фактически это запланированный, управляемый даунтайм, но и такое иногда необходимо.
Ограничения:
- Выйти из режима обслуживания через тот же веб-интерфейс по понятной причине нельзя. Для выхода потребуется каким-либо образом удалить файл режима (в примере это
/tmp/maintain
) из файловой системы. - Если у вас несколько бэкендов (например, за балансировщиком в нескольких датацентрах), то через админку Джанго придётся уводить в режим обслуживания каждый отдельно.
Приятного обслуживания.
На заметку
У нас есть новостная группа в Telegram. Там же можно обсудить интересующие вопросы. Ссылка в самом низу страницы.