为大型应用程序加载配置字典

yakonfig的Python项目详细描述


yak on fig
==


另一个配置管理库,或图上的yak

yakonfig在应用程序启动时解析yaml配置文件,并将该配置的一部分提供给应用程序中的模块。它适用于每个模块都需要单独配置的多模块应用程序。yakofig库合并应用程序提供的默认配置、用户提供的配置文件和命令行选项,以生成统一的全局配置。

----


>使用yakofig的应用程序通常创建一个“argparse.argumentparser”对象并调用“yakofig.parse args()`”,给出它是可配置模块或其他项的列表。典型的应用程序设置如下:

``python
import-argparse
import-dblogger
import-kvlayer
import-yakofig

def-main():
parser=argparse.argumentparser()
yakofig.parse-args(parser,[yakofig,dblogger,kvlayer])


模块可以提供额外的命令行参数。

传递给“parse_args()”的模块列表是一个类似于“yakonfig.configurable”对象的对象列表。它们可以是实际的对象,通常是工厂,也可以是碰巧包含相同名称的类甚至python模块。顶级python模块可能如下所示:

`` python
导入一个_包。子模块

17}
```

``子模块``列表中包含的对象具有相同的格式。运行`./my_program.py--dump config=default``将打印出一个yaml文件:

``yaml
a_包:
random_number:17
子模块:…
```

一个典型的模式是创建一个工厂对象,其中包含许多可配置的对象,例如数据处理管道中的阶段。“yakonfig.factory.autofactory”类支持此模式。由工厂构建的对象不声明任何配置元数据;相反,yakonfig通过检查对象的构造函数或函数的参数列表来确定配置名称和默认配置。工厂类本身需要包含标准的配置元数据。

`` python
类a阶段(对象):
def初始(self,随机数=17):
self.random\u number=random\u number
def\u call\uu(self):
print self.random\u number


class stage factory(yakonfig.factory.autofactory):
config\u name='stage\u factory'
auto config=[a_stage]
def\uu call\uu(self):
stage=self.create(a_stage)
stage()。

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

推荐PyPI第三方库


热门话题
java为什么Scanner类不像println方法那样使用重载的概念   java Jersey:接受枚举请求参数的整数   java如何在EclipseKepler中安装Hibernate?   java在修补servlet中的jsp文件时获取NullPointerException   java“addScript”在HSQL中是否有最大记录计数?   java Maven使用@Ignore运行单元测试   java是args[0],args[1]变量吗?   java Swing JScrollPane溢出   java与Facebook Graph Api更新机制的集成,无需实时更新   java矩形在多边形内?   java Netty句柄AnnotatedConnectionException   java Springboot JPA不自动生成表   java如何在后台或睡眠模式下采样加速度计数据   java为什么RocketMQ DefaultMQProcuderImpl在成功发送消息的情况下调用updateFaultItem   java在对象数组中计算最小值,然后在另一个计算中使用它   java重缩放JFrame内容   如何使用Netbeans在java中输入泰米尔语(swing组件)?