CherryPy 背景任务

4 投票
1 回答
4388 浏览
提问于 2025-04-16 19:39

我需要一个简单的例子,来演示如何使用 cherrypy.process.plugins.BackgroundTask

我试过了,但好像没法让它正常工作(文档里没有例子)。

这是我的代码:

def func():
   print "blah blah blah"
wd = cherrypy.process.plugins.BackgroundTask(15000,func)
wd.run()

1 个回答

3

简单来说,你应该调用 wd.start(),而不是 wd.run()

另外,由于 BackgroundTask 是一个后台线程,如果你没有做其他事情来保持解释器运行,Python 会在你的线程在后台运行时退出,这样你就无法看到输出了。

话说回来,我一直在尝试制作一个可以正常工作的例子,但还没有成功。这是我正在使用的代码,可能不太好:

import cherrypy.process.plugins

def func():
   print "blah blah blah"
wd = cherrypy.process.plugins.BackgroundTask(15, func)
wd.start()

raw_input()  # hit return when you are bored

wd.cancel()

最后,看了一下 BackgroundTask 的源代码,我发现似乎有个bug——异常处理程序依赖于一个不存在的 self.bus 属性(bus 在其他插件的构造函数中被明确设置,但在这个类中没有)。我觉得这个bug和我没有成功运行这个代码没有关系。

撰写回答