重试时芹菜什么时候调用 on_failure

When is on_failure called by celery when retrying

我在 celery 中使用 Task Inheritance 重试 (max_retries: 3) 某些异常,并记录失败。

on_failure 是在每次尝试失败时调用还是仅在最后一次尝试(在我的情况下是第 3 次)之后调用?

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

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

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