在cherrypy中使用外部文件配置工具

2 投票
1 回答
586 浏览
提问于 2025-04-16 18:58

我正在尝试配置一个工具,让它在cherrypy接收到请求时运行,并且希望使用一个外部的配置文件。我看过文档里的例子,但那些例子都是把配置直接写在源代码里,而不是放在一个单独的配置文件中。我听说工具可以外部配置,但我没有找到相关的例子。

参考一下wiki上的例子,我想做的逻辑大概是这样的:

tools.print_path = cherrypy.Tool('on_start_resource', {what goes here?})

假设我有一个名为'mytools.py'的文件在我的PYTHONPATH里,我可以用'import mytools'来导入它。在这个文件里,我有一个简单的"def print_path(multiplier=1)"方法。那么我应该在"{这里放什么?}"的位置填什么呢?我试过用mytools.print_path的不同写法,但得到的结果最好也就是这样:

CherryPy Checker:
The config entry 'tools.print_path' may be invalid, because the 'print_path' tool was not found.
section: [/]

如果有人能给我指个方向,我会非常感激。

1 个回答

0

在配置文件里没有办法直接创建一个工具(就是 cherrypy.Tool(...) 这一部分)。你需要在代码里去做这件事。你的 'mytools.py' 文件应该像这样:

def print_path(multiplier=1):
    ...
cherrypy.tools.print_path = cherrypy.Tool('on_start_resource', print_path)

...然后你的配置文件会用来为特定的 URL(以及它的子链接)开启这个工具:

[/]
tools.print_path.on: True
tools.print_path.multiplier: 23

只要确保在你的启动脚本中,在处理配置文件之前先 'import mytools' 就可以了。

撰写回答