我读了docs on Celery tasks并且无法理解我是如何做我需要的。
我想开始一项任务,运行并每1秒重试一次。 3秒后,它应该停止重试并返回默认值。
这是一个不能按预期工作的POC代码:
@task(expires=3, default_retry_delay=1, max_retries=10)
def ttt(args):
try:
return slow_work_result(args)
except SlowWorkFailed:
pass
try:
return ttt.retry(countdown=1)
except MaxRetriesExceededError:
return False
ttt.apply_async(args=(1,)).get()
任务应在3秒后过期,但MaxRetriesExceededError
应在10秒内提升。但是当我运行它时,它会因MaxRetriesExceededError
而停止。
我做错了什么?
这个try-except结构可以更优雅吗?