2011-06-15 54 views
4

我需要一個調用cherrypy.process.plugins.BackgroundTask的簡單示例。CherryPy BackgroundTask

我試過了,但似乎無法得到它的工作(在文檔中沒有例子)。

這裏是我的代碼:

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

這裏是接近現實世界的'BackgroundTask'使用示例:http://stackoverflow.com/a/27489635/2072035 – saaj 2014-12-15 17:30:14

回答

2

簡短的回答是,你要調用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明確設置在其他插件的構造函數中,但不是這個類)。我不認爲這個錯誤與我未能正常工作有關。

+0

你錯過了什麼 - BackgroundTask需要秒爲參數,而不是毫秒。我只是想出來了!但是,您將獲得啓動未運行的複選標記以及其他詳細信息!謝謝。 – michael 2011-06-15 21:22:55

+0

@marcusds,修正'15000'值使得代碼正確,但打破了對話:我說這不符合我的描述,michael解釋了爲什麼。您的修復會使該對話變得毫無意義,並要求我添加另一條評論來指出。上下文確實計數。 – 2015-03-31 19:14:06