每次重试周期增加芹菜重试时间

Gre*_*gor 16 python celery celeryd

我像在Docs-Example中那样用芹菜重试:

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

每次重试此作业时,如何增加重试倒计时 - 例如60秒,2分钟,4分钟等等,直到MaxRetriesExceeded被提升为止?

Don*_*ums 31

这是一种在每次评估任务时创建更大延迟的简单方法.该值由芹菜本身更新,因此您无需自行管理任何内容.

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

注意:重复第一个任务,倒计时为0.因为第一次运行的重试次数为0.

  • 感谢您提及 *add.request.retries* (2认同)

Per*_*rry 7

保留一个变量,其中包含最后一次重试时间,并将其每次乘以2,直到它超过您想要的任何级别(或者,如果您喜欢某个次数,请保持计数...)

  • 哦,顺便说一句,你不必传递参数,因为重试次数可用:`interval,step = 60,60; add.retry(countdown = interval +(step*add.request.retries)` (17认同)

Ant*_*hov 7

由于4.2版本可以使用的选项autoretry_for,并retry_backoff为此目的,例如:

@task(max_retries=10, autoretry_for=(Exception,), retry_backoff=60)
def add(x, y):
    pass
Run Code Online (Sandbox Code Playgroud)