我有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
函数时,它会再次使用func1
或func2
调用自身,从而导致循环播放。
现在在日志中,任务在连续执行之间的时间差应为30秒,但由于循环,它们会一个接一个地执行。
我该如何预防这种情况?
注意:我使用的是芹菜4.0.2
答案 0 :(得分:0)
使用:
celery.current_app.send_task('mymodel.tasks.mytask', args=[arg1, arg2, arg3])
其中current_app
是芹菜模块的属性。 mymodel.task
是tasks.py