Celery タスクに関するドキュメントを読みましたが、必要なことを行う方法がわかりません。
タスクを開始し、1 秒ごとに実行して再試行したい。3 秒後に再試行を停止し、デフォルト値を返します。
期待どおりに動作しない POC コードを次に示します。
@task(expires=3, default_retry_delay=1, max_retries=10)
def ttt(args):
try:
return slow_work_result(args)
except SlowWorkFailed:
pass
try:
return ttt.retry(countdown=1)
except MaxRetriesExceededError:
return False
ttt.apply_async(args=(1,)).get()
タスクは 3 秒で期限切れにMaxRetriesExceededError
なりますが、10 秒で起動する必要があります。しかし、実行すると、 が原因で停止しMaxRetriesExceededError
ます。
私は何を間違っていますか?
この try-except コンストラクトはよりエレガントにできますか?