基于etcd的django动态设置管理方案
django-etcd-settings的Python项目详细描述
功能
此应用程序允许您扩展在 settings.py文件:
- 环境相关值
- 不同配置集中的值,由名称标识,可以在 使用X-DYNAMIC-SETTINGShttp头的“每个请求”基础
添加的配置值和配置集都将存在于etcd,etcd 将由此库持续监视,以便透明地更新 更改时的应用设置。
后端
- ETCD 2.2.1
安装
$ pip install django-etcd-settings
用法
此django应用程序使用以下配置键:
- DJES_ETCD_DETAILS:带有“主机”、“端口”、“协议”、“前缀”的dict,
“长轮询超时”和“长轮询安全延迟”(均以秒为单位)。 “prefix”是一个字符串,用作所有配置的基路径 由此应用管理。 即,“/config/api”将导致“/config/api/<;env>;”和 '/config/api/extensions/'用于环境默认值和 分别设置配置 超时分别默认为50秒和5秒。 如果DJES_ETCD_SETTINGS为none,则此应用程序将以无错误和 etcd_settings.settings将解析为django.conf.settings和 djyDavePARAMS重写 即
ETCD_DETAILS=dict(host='localhost',port=4000,protocol='http',long_polling_timout=50,long_polling_safety_delay=5)
- DJES_DEV_PARAMS:具有本地覆盖的模块,通常用于
开发。覆盖必须是大写的模块属性。 这些覆盖将优先于ETCD上的开发设置, 但不覆盖由^{tt2}指示的配置集覆盖$ http头
- DJES_ENV:带有代码所在环境名称的字符串
正在运行。这将用于访问 在一个同名目录中的etcd 即“测试”、“分期”、“生产”…
- DJES_REQUEST_GETTER:访问http请求的函数的路径 正在处理的对象。确保可以实现对此值的访问 例如,使用中间件。此设置仅用于允许 基于预先定义的配置集在运行时覆盖配置。万一你 不想使用此功能,只需将此设置设置为“无” 即“中间件.线程本地.获取当前请求”
- DJES_WSGI_FILE:django的wsgi.py文件的路径 项目。如果不是无,则环境配置的监视将 每次更新env默认值时,执行文件的touch,因此 使用django.conf中设置的所有进程都可以使用 也提供最新设置 路径可以是绝对路径,也可以是相对于“manage.py”文件的路径。 即/project/src/wsgi.py,wsgi.py
然后,将etcd_settings添加到INSTALLED_APPS列表中 需要动态设置。
从代码中,只需执行from etcd_settings import settings,而不是from django.conf import settings。
如果您想使用etcd_settings修改标准中的某些值 django settings.py文件(即数据库配置),可以使用以下命令 设置文件中的代码段,在文件中尽可能高并立即 在DJES_*设置定义下:
importetcd_settings.loaderextra_settings=etcd_settings.loader.get_overwrites(DJES_ENV,DJES_DEV_PARAMS,DJES_ETCD_DETAILS)locals().update(extra_settings)