18

ドキュメントのようにセロリで再試行します-例:

@task()
def add(x, y):
    try:
        ...
    except Exception, exc:
        add.retry(exc=exc, countdown=60)  # override the default and
                                          # retry in 1 minute

このジョブで再試行が発生するたびに再試行カウントダウンを増やすにはどうすればよいですか?たとえば、MaxRetriesExceededが発生するまで60秒、2分、4分などです。

4

3 に答える 3

35

タスクが評価されるたびに、より大きな遅延を作成する簡単な方法を次に示します。この値はセロリ自体によって更新されるため、自分で何も管理する必要はありません。

@task()
def add(x, y):
    try:
        ...
    except Exception as exc:
        raise add.retry(exc=exc, countdown=60 * add.request.retries) 

注:最初のタスクは、カウントダウン0で繰り返されます。最初の実行の再試行回数は0であるためです。

于 2014-04-11T14:22:08.193 に答える
10

バージョン4.2以降、オプションautoretry_forを使用できますretry_backoff。この目的には、次のようになります。

@task(max_retries=10, autoretry_for=(Exception,), retry_backoff=60)
def add(x, y):
    pass
于 2018-02-19T13:04:53.050 に答える
7

最後の再試行時間を含む変数を保持し、必要なレベルを超えるまで毎回2を掛けます(または、特定の回数を希望する場合はカウントを保持します...)

于 2012-02-27T18:23:06.890 に答える