我像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_for
和retry_backoff
,例如:
@task(max_retries=10, autoretry_for=(Exception,), retry_backoff=60)
def add(x, y):
pass
保留一个包含上次重试时间的变量,每次将其乘以2,直到它超过您想要的任何级别(或者,如果您喜欢某个次数,则保留一个计数…)