向棱锥体动态添加管线

2024-04-26 01:22:03 发布

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

我想知道如何在运行时编辑金字塔注册表。嗯,我不太确定我到底要编辑什么。在

我知道我可以扩展金字塔配置包含(...). 但是有一次config.make\u wsgi_应用程序调用()时,似乎无法添加路由或新的mako目录。对threadlocals或设置中的注册表所做的任何更改都不会影响应用程序的行为。在

我的目标是在运行时添加插件。下面是一个用例。在

有人安装我的应用服务器运行金字塔…然后安装一些插件

pip安装页面插件

然后在/配置中

有一个已安装插件的列表,您可以选择哪些插件被激活或不激活。目前我只知道一种方法:

使用入口点,我可以看到我的插件,在金字塔的主要功能,我可以注册插件。使用文件存储,我可以检查每个插件的状态:[install,installed,uninstall,uninstalled,disabled]

这样我就可以从一个视图安装/卸载我的插件。在

为了看到任何变化,我必须重新启动服务器。在

州 下次启动时安装:将安装 已安装:已安装并处于活动状态 卸载:将在下次启动时卸载 已卸载:已卸载 禁用:未卸载但未激活

安装/卸载用于在需要时设置数据库

我认为没有其他真正的方法可以做到这一点,因为没有“删除视图”。我可以让服务器重新加载。它会加载新的配置。在

[编辑]

没有删除路由或蚂蚁的功能。所以我的猜测是,重新调整服务器可能是最简单最简单的方法。。。而且重新启动服务器可能比忘记从插件中卸载一些东西更干净。在


Tags: 方法功能服务器目录插件视图config应用程序
1条回答
网友
1楼 · 发布于 2024-04-26 01:22:03

可以在运行时修改注册表:

config = Configurator(registry=request.registry)
config.add_route(...)
config.commit()

但是,您必须注意,修改注册表不是线程安全操作。你必须自己同步。与其这样做,我建议用不同的方式思考您的问题,并尝试创建包含您预期扩展的特性的路由。路由可以接受模式(如果您想要剩余的URL,甚至可以是.*),而且还有一种非常动态的遍历,可以在运行时进行扩展。在

添加可移动视图是可能的,但我不会在“添加或删除路由”级别这样做。相反,我建议在路由上使用自定义谓词来控制路由是否匹配。在

^{pr2}$

这样,如果is_enabled返回False,则路由将永远不匹配,并被有效地忽略。在

相关问题 更多 >