Использование etcd для управления настройками Django

Допустим, у меня есть приложение Django, и я выгружал хранилище переменных среды в etcd. Когда я развертываю новый сервер, приложение может читать из etcd, записывать переменные в (например) файл Python, который может быть условно загружен при загрузке приложения. Это очень приемлемо.

Однако, когда конфигурация меняется, я не могу знать. Afaik, etcd не передает изменения. Нужно ли устанавливать демон, который опрашивает, а затем перезагружает мое приложение при изменении значения? Должен ли я запрашивать etcd всякий раз, когда мне нужно использовать один из этих параметров? Как люди справляются с этим?

2 ответа

Вы можете использовать ETCD в качестве бэкэнда настроек, но для того, чтобы Django мог воспринимать изменения конфигурации во время выполнения (т.е. без перезапуска / перезагрузки), вам нужно настроить фоновый механизм, чтобы продолжать считывать настройки.

Пакет django-etcd-settings делает это, запустив поток демона, который затем установит соединение с длинным опросом, чтобы считывать ключи из ETCD и поддерживать настройки в актуальном состоянии.

Я не использовал CoreOS или Docker, но много читаю и думаю, что это очень сексуально. Я думаю, решение зависит от того, как вы настроили свое приложение. Если у вас есть такая же поддержка "touch-reload", которую вы видите во многих серверах приложений (uWSGI f.ex.), вы можете установить key_file в /etc/etcd/etcd.conf и заставить свой сервер приложений наблюдать за этим. Это кажется на тонну тяжелее, чем ты должен быть. Я вполне уверен, что кто-то с опытом работы с платформой может придумать что-то гораздо лучшее.

Другие вопросы по тегам