金字塔:将其他配置发送到应用程序工厂

2024-06-16 12:31:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经设置了金字塔配置文件如下:

[app:main]
...

[server:main]
...


[memcache]
# memcache config

[zeromq]
# zeromq xonfig

现在在我的app_factory中,我想要得到所有的配置——不仅仅是app:main部分,还有memcachezeromq和其他可能的部分。在

我该怎么做。在

我之所以将配置分成不同的部分,是因为我的应用程序使用了许多不同的服务,我不想把所有配置都拼凑到app:main部分中。在

一种方法是通过读取配置文件手动将配置文件拉到应用程序中。然后你必须知道应用程序运行的模式(开发或生产)。此外,还存在多次解析配置的开销(因为粘贴部署将首先进行解析)。在

有没有更好更优雅的解决方案?在


Tags: 方法程序运行configapp应用程序servermain粘贴
2条回答

不幸的是,如果您想采用这种方法,就必须再次解析配置文件。您可以通过main中的config_file = global_config['__file__']获取该文件,并使用stdlibConfigParser自己解析它。在

如果您喜欢这种包含单独部分的INI格式,那么Mozilla服务有一个很好的小模块,可以用来为您处理所有这些。它进行值转换(尝试将值转换为整数或布尔值)。它支持用其他部分扩展配置,例如[foo:bar] key = value,解析后将返回一个包含settings['foo.bar.key'] == value的简单字典。你也可以很方便地分析它的主要内容:

def main(global_config, **settings):
    config = get_configurator(global_config, **settings)
    settings = config.registry.settings
    # ... do your app configuration
    return config.make_wsgi_app()

https://wiki.mozilla.org/index.php?title=Services/Sync/Server/GlobalConfFilehttps://github.com/mozilla-services/mozservices/blob/master/mozsvc/config.py

您可以将特定于应用程序的配置传递到ini文件中:

[app:xyz]
    something = True

然后在您的main函数(应用程序工厂)中,您可以作为

^{pr2}$

更多信息:

http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html#adding-a-custom-setting

相关问题 更多 >