重试时celery何时调用on_failure

Tom*_*vey 2 python celery

我在 celery 中使用任务继承max_retries: 3来重试( )某些异常并记录失败。

on_failure在每次失败的尝试时调用还是仅在最后一次尝试(在我的例子中是第三次)之后调用?

def __call__(self, *args, **kwargs):
        try:
            return self.run(*args, **kwargs)
        except InterfaceError as exc:
            self.retry(exc=exc, countdown=5, max_retries=3)

def on_failure(self, exc, task_id, args, kwargs, einfo):
    log(exc)  # This is a gross simplification of the logging
Run Code Online (Sandbox Code Playgroud)

Tom*_*vey 5

对此进行了测试, on_failure 仅在重试全部失败后运行。

因此,使用上面给出的示例, on_failure 在第三次失败后被调用。