如何在金字塔中使用常见的ini配置(开发和生产之间)?

时间:2012-06-18 19:11:59

标签: python configuration pyramid

我想要一个通用配置,其设置不会在不同环境(开发和生产)中发生变化。我知道我可以设置一个全局的settings.py文件(例如,sql限制),但据我所知,金字塔需要在启动时在ini文件中找到某些设置(例如,模板目录路径)。

我可以,如果是这样,我将如何在金字塔中执行此操作?

1 个答案:

答案 0 :(得分:16)

除了PasteDeploy的INI-confines外,有几种可能的选择。但是,在前面,意识到INI文件模型的美妙之处在于能够创建具有不同设置/配置的多个文件。是的,你必须让它们保持同步,但它们只是设置(没有逻辑),因此不应该是不可克服的。

无论如何,由[app:XXX]部分继承的PasteDeploy supports a default section。因此,您可以在其中放置常用设置,并使用不同的[app:myapp-dev][app:myapp-prod]部分。

# settings.ini

[DEFAULT]
foo = bar

[app:myapp-dev]
use = egg:myapp

[app:myapp-prod]
use = egg:myapp

set foo = baz

这可以通过

运行
env/bin/pserve -n myapp-dev settings.ini

另一种选择是使用多个配置文件。

# myapp.ini

[app:myapp-section]
use = egg:myapp

foo = bar

# myapp-dev.ini

[app:main]
use = config:myapp.ini#myapp-section

foo = baz

# myapp-prod.ini

[app:main]
use = config:myapp.ini#myapp-section

这可以通过

运行
env/bin/pserve myapp-prod.ini

如果您不想使用PasteDeploy(ini文件),您可以在Python中执行某些操作,但这种配置的实际好处很简单。