【问题标题】:How to properly manage application configurations如何正确管理应用程序配置
【发布时间】:2013-01-18 10:18:12
【问题描述】:

什么是最通用和最好的应用程序配置管理方法?我想拥有这些属性以便拥有“良好的配置管理”:

  • 所有可用属性及其默认值的列表 地点。
  • 应用程序用户可以更改的属性列表,也可以在一个 地点。
  • 当我检索特定属性时,它的值是从 第二个列表(用户可更改的配置),或者如果它不存在,从 第一个列表。

到目前为止,我所做的是将第一个列表硬编码为一个对象(更具体地是一个 dict),写了 .conf 使用的文件 ConfigParser 使应用程序用户可以轻松更改一些属性(第二个列表),并在 config 对象上编写了一个公共方法,以通过其名称检索属性,或者如果它不存在,则引发异常。最后,一个对象负责管理所有的东西(解析文件,引发异常,覆盖属性等)但我想知道,是否有一个内置库或多或少做同样的事情,甚至更好管理配置的方法,它考虑了所有 KISS、DRY 和其他原则(我并不总是使用这种方法成功)?

提前致谢。

【问题讨论】:

  • 我不关注,ConfigParser 是内置的,似乎适用于您的用例,KISS 和 DRY 是您的责任,稍加思考就可以实现。 - 当然你可以使用picklemarshal 来保存你的应用程序的整个状态,但是这是不可配置的。
  • ConfigParser 确实是您想要在这里使用的。不过,我对你的解释有点困惑。是否有您不能/不想使用ConfigParser 的特定原因?
  • 我可以使用它,并且确实使用它,但是ConfigParser 的级别太低了,我想知道是否有一种方法可以更抽象地做到这一点。我认为我要实现的是一项常见任务,所以只想问其他人是否有更好的方法来管理配置。感谢您的回复

标签: python configuration


【解决方案1】:

创建一个包含所需默认设置的默认设置模块。创建第二个供用户使用的模块,并在顶部使用 from default_settings import * 语句,并指示用户将任何替换内容写入此模块。

Python 的表达能力很强,所以在大多数情况下,如果您希望用户在任何层面上都能理解它,您可以使用 Python 模块本身作为配置文件。

【讨论】:

    猜你喜欢
    • 2017-05-09
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 2019-02-08
    • 2018-05-14
    • 2010-10-01
    相关资源
    最近更新 更多