Celery 3.0.12 を使用しています。
Q1、Q2 の 2 つのキューがあります。
通常、メイン タスクを Q1 に置き、サブタスクを呼び出して Q2 に移動します。サブタスクの結果を保存したくありません。したがって、私のサブタスクにはデコレータ @celery.task(ignore_results=True) があります。
メインタスクは、サブタスクが完了するまで待機する必要があります。結果を書かないので。使用できません: AsyncResult. 状態をバックエンドに保存せずにサブタスクが終了するまで待機するメインタスクで待機する方法はありますか? AsyncResults を使用したすべての試みは、成功の燃料ではありません (バックエンドに依存しています)。get() もバックエンドに依存しているようです。
コード内のストーリー全体:
@celery.task(ignore_result=True)
def subtask():
#Do something
@celery.task
def maintask():
# Do something
# Call subtask on Q2:
res = subtask(options={'queue':'Q2'}).delay()
# Need to wait till subtask finishes
# NOT WORKING (DOES NEVER RETURN)
res.get()
Celery Flower を使用してアプリケーション全体を監視していますが、サブタスクが正常に終了していることがわかります。セロリはどのようにしてその状態を検出できますか? 私は彼らのコードを閲覧しましたが、彼らがどのように検出を行っているかを見つけることができませんでした.