0
#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)”

注意:我需要每个任务来执行另一个任务。

4

3 回答 3

0

You should look at subtasks and callbacks, might give you the answer you are looking for

http://celeryproject.org/docs/userguide/tasksets.html

于 2011-04-16T18:35:25.963 回答
0

addinside 函数体是指原始函数,而不是它的修饰版本。

如果您只需要重复运行任务,请@periodic_task改用。如果每次延迟都不同,您只需要递归。在这种情况下,使用子类Task而不是使用装饰器,您将能够毫无问题地使用递归。

于 2011-04-16T18:01:21.883 回答
0

据我所知,periodic_task 装饰器正在创建周期性任务,task 只创建一个任务。而延迟只是异步执行它。

您应该只使用periodic_task,而不是递归。

于 2010-12-29T08:04:29.497 回答