我像在文档示例中一样重复使用芹菜:
@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被提升?
答案 0 :(得分:30)
这是一种在每次评估任务时创建更大延迟的简单方法。这个值由芹菜本身更新,因此您不需要自己管理任何东西。
@task()
def add(x, y):
try:
...
except Exception as exc:
raise add.retry(exc=exc, countdown=60 * add.request.retries)
注意:重复第一个任务,倒计时为0.因为第一次运行的重试次数为0。
答案 1 :(得分:7)
保留一个变量,其中包含您的最后一次重试时间,并将其每次乘以2,直到它超出您想要的任何级别(或者,如果您喜欢一定次数,请保持计数......)
答案 2 :(得分:4)
自version 4.2以来,您可以将选项autoretry_for
和retry_backoff
用于此目的,例如:
@task(max_retries=10, autoretry_for=(Exception,), retry_backoff=60)
def add(x, y):
pass