#tasks.py
from celery.task import Task
class Randomer(Task):
def run(self, **kwargs):
#run Randomer again!!!
return random.randrange(0,1000000)
>>> from tasks import Randomer
>>> r = Randomer()
>>> r.delay()
现在,我执行简单的任务。它返回一个随机数。但是,如何让它在另一项任务中运行 ?
答案 0 :(得分:6)
您可以从other_task.delay()
内拨打Randomer.run
;在这种情况下,您可能需要设置Randomer.ignore_result = True
(和other_task.ignore_result
,等等。)
请记住,芹菜任务delay
会立即返回,因此如果您没有对嵌套调用(或递归调用)设置任何限制或等待时间,您可以很快达到崩溃。
除了递归或嵌套任务之外,你应该考虑一个无限循环来避免堆栈溢出(没有双关语意)。
from celery.task import Task
class Randomer(Task):
def run(self, **kwargs):
while True:
do_something(**kwargs)
time.sleep(600)
答案 1 :(得分:2)