【发布时间】:2012-10-26 09:39:53
【问题描述】:
我阅读了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 构造可以更优雅吗?
【问题讨论】:
-
expire 目前没有转移到重试的任务,我相信有一个问题悬而未决