6

假设我有一个 Django 应用程序,并且我已将环境变量存储卸载到 etcd。当我部署新服务器时,应用程序可以从 etcd 读取,将变量写入(例如)一个 Python 文件,该文件可以在应用程序启动时有条件地加载。这么多是可以接受的。

然而,当配置发生变化时,我无法知道。Afaik,etcd 不广播更改。我是否需要设置一个守护程序来轮询然后在值更改时重新加载我的应用程序?每当我需要使用这些参数之一时,是否应该查询 etcd?人们如何处理这个问题?

4

2 回答 2

1

您可以使用 ETCD 作为设置后端,但为了让 Django 在运行时获取配置更改(即无需重新启动/重新加载),您需要设置一个后台机制来继续读取设置。

django-etcd-settings包通过启动一个守护线程来完成它,该线程随后将设置一个长轮询连接,以便从 ETCD 读取密钥并保持设置是最新的。

于 2018-06-27T08:37:34.303 回答
0

我没有使用过 CoreOS 或 Docker,但读了很多书,认为这是非常性感的东西。我想解决方案取决于您如何设置应用程序。如果你有在许多应用服务器(uWSGI f.ex.)中看到的相同类型的“触摸重载”支持,你可以在 /etc/etcd/etcd.conf 中设置 key_file 并让你的应用服务器监视它。这感觉比你应该重一吨。我很确定有该平台经验的人可以想出更好的东西。

于 2014-10-28T15:12:07.253 回答