基于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 API以编程方式创建ARM模板   java是否有合适的模式或方法来遍历数据和动态构造对象?   oop((类名)InstanceName)在java中有什么用途?   接口Java类方法未初始化   Java类:静态字段在内存中的位置?   java错误:服务类没有零参数构造函数   使用JDBC模板的java参数化sql查询   安卓致命异常:主java。lang.RuntimeException:   amazon web服务使用IAM角色从java访问AWS S3   java如何在Gradle中使用ojdbc   带块的Java类实例化   java日志记录是否有很大的开销,即使它是关闭的?   java JetBrains@Contract using字段   BluetoothGattCallback中从未调用java onDescriptorWrite()   java HttpMessageConverter无效的EOF处理   java在安卓的主活动类中调用另一个类   java防止在spring hibernate中存储重复值的正确方法   java如何在JAVADOC注释中使用变量?