基于pythonyaml的配置
pypigeonhole-config的Python项目详细描述
Python应用程序配置
这是一个用于应用程序配置的配置工具,类似于 Spring Framework Core。在
应用程序设置
非平凡的应用程序有外部设置,例如属性、ini, xml、yaml或其他(例如,配置服务器)。我们将使用YAML文件 这是当前流行的配置应用程序的方法。优点之一 对于YAML,它支持树结构以避免重复的密钥路径。 对于复杂的设置来说,XML也是一个不错的选择,但是由于 打开/关闭标签。在
所有不同格式的设置最终都会解析为键值对。 键是用于分组的树路径。这些值是简单的数据类型,例如 字符串、布尔值、整型、浮点型、日期时间等
除了这些设置文件,我们还想通过命令覆盖一些设置 线参数或环境变量。协调来自不同 来源,我们修改了以下内容:
- yaml设置是基线
- 可以通过${env_var引用环境变量_名称:默认值}在
- 可能从命令行传入,如-Ekey=value。这可能会覆盖yaml或 环境变量值。在
但是,当前环境变量和命令行覆盖treat 所有值均为字符串。一种方法是使用单独的YAML文件 不同的情况。在
YAML文件示例,测试.yaml公司名称:
db:
url: 'go://disney'
user: 'mickey mouse'
server_port: 8080
price: 3.1415925
begin_date: !!timestamp '2010-11-17 13:12:11'
ext_var: ${my_env}
Python代码示例:
^{pr2}$应用程序配置
应用程序由组件组成,这些组件可以由其他组件组成。所以 最后我们得到了一个组件树,其中应用程序位于顶部。装配 这些部件,我们可以把它们硬连接在一起。更好的方法是 IoC或 DIP。在
我们的IoC容器有3层:
- 用于处理树路径的键值对存储,如上图所示。在
- 管理对象生命周期和设置依赖关系的对象容器。在
- 加载YAML配置并将其注入对象的上下文。在
有两种利用lib的方法:
- 使用上下文作为配置工具。一旦上下文加载了YAML 文件,可以在其他地方引用。在
- 将上下文用作IoC容器。在容器中注册对象,然后 我们可以检索依赖项和配置完全填充的对象。在
该配置有3个优先顺序,从高到低:
- 加载配置后,有机会重写它,因为 正在初始化对象。所以我们可以从命令行获取覆盖并覆盖 设置。在
- 设置环境变量并在YAML文件中检索它们。这是一个 比我们盲目地覆盖 环境。在
- YAML文件。在
密码有加密功能。在
Python是一种函数式语言,但有些情况下我们需要类。 将所有参数传递给函数会污染函数接口并创建 信息泄露。例如,将数据库连接传递给 如果从数据库切换,则检索所有函数的数据结果更改 存储到其他人,如弹性搜索服务器。所以把联系隐藏在 一个类(通过构造函数)并保持数据检索接口干净 会是一个更好的解决方案。在
由于Python的特性,singleton并不像Java那样糟糕。尤其是 在应用程序启动期间,如果我们可以保证单线程,则有 比Java的游戏空间更大。在
待办事项
- 我们需要多个YAML文件吗?如果是这样的话,这就是解决问题的方法。 https://stackoverflow.com/questions/528281/how-can-i-include-a-yaml-file-inside-another
- 需要性能测试。在
- 项目
标签: