有没有使用粘贴部署共享公共配置的方法?

2024-05-21 08:35:01 发布

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

从概念上讲,这是一个相当简单的想法。在细节方面,我正在使用一个非常通用的Kotti安装,在那里我定制了一些页面/模板。在

我的大部分配置是在生产服务器和开发服务器之间共享的。目前,这些设置包含在两个独立的ini文件中。在一个地方用普通的设置来干燥这个配置是很好的。在

我非常愿意在python或ini文件/节(或者可能是第三个文件/节)中发生这种情况。我认为这相当于使用一个[DEFAULT]节,或者通过global_conf将字典传递给loadapp,但这似乎是以一种简单的方式处理的。例如,科蒂认为我已经准备好了sqlalchemy.url,但sqlalchemy iteself在url = opts.pop('url')上失败。此外,由于Kotti定义了一些默认设置,Paste最终不会在全局配置中搜索它们(例如,kotti_configurators)。在

我不喜欢为%(var)s替换传递一个大dict,因为它需要有效地重命名所有共享变量。在

在我最初的pastedeploy实验中,它要求在每个ini文件中有一个“main”部分。所以,我不认为我可以只使用use = config:shared.ini行。但这在概念上和我想做的很接近。在

有没有一种方法可以显式(并且正确地)包含来自DEFAULT或global_conf的设置?或者用python对loadapp的结果进行编程?在


Tags: 文件服务器模板default概念urlsqlalchemyconf
1条回答
网友
1楼 · 发布于 2024-05-21 08:35:01

For example, Kotti thinks I've properly set sqlalchemy.url, but sqlalchemy iteself fails on url = opts.pop('url').

如果你觉得有什么不对劲,而你又在问,那么最好展示一个stacktrace和一个你试图做什么的例子。在

Kotti的设置与任何金字塔应用程序相同。您的入口点(def main(global_conf, **settings)通常)被传递给global_conf和{}字典。然后你负责修复这个问题,并把它放到配置器中。在

由于各种原因,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()

相关问题 更多 >