增加每个重试周期的芹菜重试时间



我像Docs中那样用芹菜重试示例:

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

每次重试此作业时,我如何增加重试倒计时(例如60秒、2分钟、4分钟等),直到引发MaxRetriesExceeded?

这里有一个简单的方法,可以在每次评估任务时创建更大的延迟。这个值是由芹菜本身更新的,所以您不需要自己管理任何东西。

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

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

自版本4.2以来,您可以为此使用选项autoretry_forretry_backoff,例如:

@task(max_retries=10, autoretry_for=(Exception,), retry_backoff=60)
def add(x, y):
    pass

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

最新更新