2017-02-02 5 views
0

は、私はこのような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秒の時間差があるはずですが、ループするために次々に実行されます。

どうすればこのような状況を防ぐことができますか?

注:私はCURRENT_APPでありセロリ4.0.2

答えて

0

は `celery.current_app.send_task( 'mymodel.tasks.mytask'、引数= [ARG1、ARG2、ARG3])

を使用して使用していセロリモジュールの特性mymodel.tasksはあなたのtasks.pyへのパスです