基于etcd的django动态设置管理方案

django-etcd-settings的Python项目详细描述


https://secure.travis-ci.org/kpn-digital/django-etcd-settings.svg?branch=masterhttps://img.shields.io/codecov/c/github/kpn-digital/django-etcd-settings/master.svghttps://img.shields.io/pypi/v/django-etcd-settings.svghttps://readthedocs.org/projects/django-etcd-settings/badge/?version=latest

功能

此应用程序允许您扩展在 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)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何实现INotifyPropertyChanged的RxJava等价物以创建可观察的数据模型?   ArrayList中的java搜索   性能如何在Java中分析对象创建?   java使用arraylist中的运算符组合获取目标编号   java如何在片段中为添加/删除节点(使用grathstream)创建触摸事件?   java向jvm添加不同的p12证书   返回匿名类的新对象的java方法   java如何打开地图中的对象列表   使用socket的聊天应用程序在Java中不在Internet上工作   java可以在清单中定义值。是否可以通过编程方式访问MF?   什么东西(负)是什么意思?   java动态加载jar文件并使用xml创建Springbean   java实体类字符串[]与列表<String>   java自动化测试用例适用于appium命令行工具,但不适用于桌面客户端   java如何在Springboot中从JSON数组中删除元素?   runnable jar中的swing Java While循环不是迭代的,而是在eclipse中运行良好的相同代码   如何从Java中的CosmosDB容器中检索给定分区键的所有文档?   我想将java中数组中的值存储在我自己类型的arrayList中。我该怎么做   使用ApachePOI的java条件格式   java需要编写没有线程的selenium代码。睡觉