这在概念上是一个非常简单的想法。在细节方面,我正在使用一个非常通用的Kotti安装,我正在定制一些页面/模板。
我的大部分配置都是在生产和开发服务器之间共享的。目前,这些设置包含在两个单独的ini文件中。干这个配置会很好,在一个地方有常见的设置。
我对python或ini文件/部分(或者可能是第三个尚待考虑的地方)发生这种情况持开放态度。我认为这相当于使用[DEFAULT]部分,或通过loadapp
将字典传递给global_conf
,但这似乎是以一种松散的方式处理。例如,Kotti认为我已正确设置sqlalchemy.url,但sqlalchemy iteself在url = opts.pop('url')
上失败。此外,由于Kotti定义了一些默认设置,因此Paste不会最终在global_conf中搜索它们(例如,kotti_configurators
)。
我不喜欢传递%(var)s
替换的大型字典的想法,因为它需要有效地重命名所有共享变量。
在我最初的Paste Deploy实验中,它要求每个ini文件中都有一个“主”部分。所以,我认为我不能只使用use = config:shared.ini
行。但这在概念上接近我想做的事情。
有没有办法明确(并且正确)包含DEFAULT或global_conf
的设置?或者也许用loadthon的结果以编程方式执行此操作?
答案 0 :(得分:3)
例如,Kotti认为我已正确设置sqlalchemy.url,但sqlalchemy iteself在url = opts.pop('url')上失败。
如果你认为某些事情是奇怪的而且你在问这个问题,那么展示一个堆栈跟踪和你试图做的事情的例子是明智的。
Kotti的设置与任何金字塔应用程序相同。您的入口点(通常为def main(global_conf, **settings)
)将传递global_conf
和settings
字典。然后你负责解决这个问题并将其改组到配置器中。
由于各种原因,PasteDeploy会将global_conf
与设置分开,因此如果您愿意,您有责任合并它们。
[DEFAULT]
foo = bar
[app:main]
use = egg:myapp#main
baz = xyz
def main(global_conf, **app_settings):
settings = global_conf
settings.update(app_settings)
config = Configurator(settings=settings)
config.include('kotti')
return config.make_wsgi_app()