我已经设置了金字塔配置文件如下:
[app:main]
...
[server:main]
...
[memcache]
# memcache config
[zeromq]
# zeromq xonfig
现在在我的app_factory
中,我想要得到所有的配置——不仅仅是app:main
部分,还有memcache
,zeromq
和其他可能的部分。在
我该怎么做。在
我之所以将配置分成不同的部分,是因为我的应用程序使用了许多不同的服务,我不想把所有配置都拼凑到app:main
部分中。在
一种方法是通过读取配置文件手动将配置文件拉到应用程序中。然后你必须知道应用程序运行的模式(开发或生产)。此外,还存在多次解析配置的开销(因为粘贴部署将首先进行解析)。在
有没有更好更优雅的解决方案?在
不幸的是,如果您想采用这种方法,就必须再次解析配置文件。您可以通过
main
中的config_file = global_config['__file__']
获取该文件,并使用stdlibConfigParser
自己解析它。在如果您喜欢这种包含单独部分的INI格式,那么Mozilla服务有一个很好的小模块,可以用来为您处理所有这些。它进行值转换(尝试将值转换为整数或布尔值)。它支持用其他部分扩展配置,例如
[foo:bar] key = value
,解析后将返回一个包含settings['foo.bar.key'] == value
的简单字典。你也可以很方便地分析它的主要内容:https://wiki.mozilla.org/index.php?title=Services/Sync/Server/GlobalConfFilehttps://github.com/mozilla-services/mozservices/blob/master/mozsvc/config.py
您可以将特定于应用程序的配置传递到ini文件中:
然后在您的
^{pr2}$main
函数(应用程序工厂)中,您可以作为更多信息:
http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html#adding-a-custom-setting
相关问题 更多 >
编程相关推荐