我阅读了有关 Celery 任务的文档,但不明白我是如何做我需要的。
我想开始一项任务,每 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 构造可以更优雅吗?