【问题标题】:CherryPy BackgroundTaskCherryPy 后台任务
【发布时间】:2011-09-15 20:57:22
【问题描述】:

我需要一个调用cherrypy.process.plugins.BackgroundTask 的简单示例。

我试过了,但似乎无法让它工作(文档中没有示例)。

这是我的代码:

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

【问题讨论】:

标签: python cherrypy


【解决方案1】:

简短的回答是,你想打电话给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 的来源,我发现似乎是一个错误——异常处理程序依赖于不存在的self.bus 属性(bus 在其他插件中显式设置' 构造函数,但不是这个类)。我不认为该错误与我未能使其正常工作有关。

【讨论】:

  • 你错过了一些东西 - BackgroundTask 需要秒作为参数,而不是毫秒。我只是想通了!!!!但是您会得到 start-not-run 的复选标记以及其他详细信息!谢谢。
  • @marcusds,修复 '15000' 值使代码正确,但中断了对话:我说它在我的描述中不起作用,迈克尔解释了原因。您的修复使该对话变得荒谬,并要求我添加另一条评论以指出这一点。上下文确实很重要。
猜你喜欢
  • 2011-09-29
  • 2013-02-04
  • 2017-10-01
  • 1970-01-01
  • 2020-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多