如何阻止Celery任务回调?

时间:2017-02-02 10:41:03

标签: python celery

我有3个这样的芹菜任务:

@app.task
def main_func():
    if this:
        func1.delay()
    else:
        func2.delay()

@app.task
def func1():
    ... do something ...

@app.task
def func2():
    ... do something ...

函数main_func计划每30秒执行一次。如果满足某些条件,则会调用func1的芹菜任务,否则会为func2创建任务。

现在,当我运行芹菜工作者并执行main_func函数时,它会再次使用func1func2调用自身,从而导致循环播放。

现在在日志中,任务在连续执行之间的时间差应为30秒,但由于循环,它们会一个接一个地执行。

我该如何预防这种情况?

注意:我使用的是芹菜4.0.2

1 个答案:

答案 0 :(得分:0)

使用:

celery.current_app.send_task('mymodel.tasks.mytask', args=[arg1, arg2, arg3])

其中current_app是芹菜模块的属性。 mymodel.tasktasks.py

的路径