使用consul作为项目选项存储的框架

consul-options的Python项目详细描述


https://travis-ci.org/Fatal1ty/consul-options.svg?branch=masterRequirements Statushttps://img.shields.io/pypi/v/consul-options.svghttps://img.shields.io/pypi/pyversions/consul-options.svghttps://img.shields.io/badge/License-Apache%202.0-blue.svg

您想知道项目设置的存储频率是多少?当你的项目很小的时候 这不是什么大问题。但是如果你的大项目由几十个微服务组成 然后是集中配置管理的问题。图标有一个键/值 理想的存储空间。

使用consun options您可以用简单而优雅的方式在代码中定义和使用选项。 看看这个例子:

classDB(ConsulKV):passclassUsers(DB):host='127.0.0.1'port=5432user='postgres'password='postgres'dbname='users'classOrders(DB):host='127.0.0.1'port=5432user='postgres'password='postgres'dbname='orders'

现在您可以清楚地访问选项值:

fromconsul_optionsimportoptionsprintoptions.db.users.hostprintoptions.db.orders.dbname

consun options自动创建具有上面定义的默认值的文件夹和键 后来在领事馆读到了。所以如果有人更改db/orders/host键的值 在执政官那里你会得到不同的价值。

项目选项如何存储在consul中

当您基于consulkv声明一个新类时默认的bahavior是 在consun key/value存储中创建一个folder,类的名称用小写。 定义的每个类属性都将映射到键folder/key。 如果您不同意生成的文件夹名,您可以自由选择其他文件夹名 保留类属性\u key如下所示:

classWorkerOptions(ConsulKV):__key__='worker'host='127.0.0.1'port=80

之后,您可以使用路径中的“worker”访问该选项:

fromconsul_optionsimportoptionsprintoptions.worker.hostprintoptions.worker.port

要创建层次密钥结构,可以利用通常的类层次结构:

fromconsul_optionsimportConsulKV,optionsclassWorkerOptions(ConsulKV):__key__='worker'host='127.0.0.1'port=80classDB(WorkerOptions):host='127.0.0.1'port=5432user='postgres'password='postgres'printoptions.worker.db.host# 'host'printoptions.worker.db.port# 5432

也可以在根级别创建具有类属性\u root\u的键

classRootOptions(ConsulKV):__root__=Truehost='127.0.0.1'port=80printoptions.hostprintoptions.port

兼容性

consun选项与python 2和python 3都兼容。

安装

使用PIP安装:

$ pip install consul-options

许可证

consulpoptions是在apache 2.0许可下开发和分发的。

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

推荐PyPI第三方库


热门话题
java是数据线。getMicrosecondPosition()线程安全?   java我可以设置多个。whereEqualTo在firestore查询中指向文档中的字段?   java Intellij 14 Glassfish服务器未连接。部署不可用   java JPA。如何返回null而不是LazyInitializationException   java TarsosDSP Clap检测   比较基于字符串的java枚举   java空指针异常日历。设定时间   java Hystrix在运行时忽略超时   将数据从Java RESTful服务器推送到Android手机上进行通知   java Jnotify delete vs shift delete问题   java安装失败\u没有匹配\u ABIS res113   TreeJava:传递未实例化的对象引用是如何工作的?   java如何使用Android ringtone manager从资产文件夹播放铃声?   java在Dropwizard的不同状态下使用不同的模拟