#tasks.py
from celery.decorators import task
@task()
def add(x, y):
add.delay(1, 9)
return x + y
>>> import tasks
>>> res = tasks.add.delay(5, 2)
>>> res.result()
7
如果我运行此代码,我希望将任务连续添加到队列中。但事实并非如此!只有第一个任务(5,2)被添加到队列并进行处理。
由于这一行,应该不断添加任务:“add.delay(1,9)”
注意:我需要执行另一项任务。
答案 0 :(得分:0)
据我所知,periodic_task装饰器正在创建前期任务,任务只创建一个任务。延迟只是异步执行它。
你应该只使用periodic_task而不是递归。
答案 1 :(得分:0)
add
是指原始函数,而不是它的装饰版本。
如果您只需要反复运行任务,请改用@periodic_task
。如果每次延迟不同,您只需要递归。在这种情况下,子类Task
而不是使用装饰器,你将能够毫无问题地使用递归。
答案 2 :(得分:0)
您应该查看子任务和回调,可能会给您正在寻找的答案