web-dev-qa-db-ja.com

セロリ、カウントダウンで遅延を呼び出す

セロリの仕組みを理解しようとしています

私のDjangoアプリケーションtasks.pyファイル1つのタスクを作成しました:

@celery.shared_task(default_retry_delay=2 * 60, max_retries=2)
def my_task(param1, param2):
    # There are some operations

私はこのコードを使用してこのタスクを呼び出します:

my_task.delay(param1, param2)

この中my_taskこのタスクを再度開始する必要がある条件が1つありますが、1分の遅延の後

タスクには何らかの ETAとカウントダウン があることがわかりましたが、それらの例はapply_async

delayに何らかのカウントダウンを使用することは可能ですか?

6
Mr.D

から セロリ呼び出しドキュメントの基本部分

delay(*args, **kwargs)

タスクメッセージを送信するためのショートカットですが、は実行オプションをサポートしていません

したがって、遅延は明らかに便利ですが、追加の実行オプションを設定したい場合は、apply_asyncを使用する必要があります。

ドキュメントに記載されているように、delayを追加のオプションセットと共に使用することはできないため、呼び出しをapply_asyncに変換する必要があります

実行オプションを追加する場合は、ドキュメントで署名を使用することをお勧めします。例えば:

my_task.s(arg1, arg2).apply_async(countdown=60)
3
iklinac