Skip to content
Advertisement

When is on_failure called by celery when retrying

I’m using Task Inheritance in celery to retry (max_retries: 3) on certain exceptions, and log failures.

Is on_failure called on each failed attempt or only after the last attempt (the 3rd in my case)?

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

Advertisement

Answer

Tested this and on_failure is only run after the retries have all failed.

So, using the example given above, on_failure is called after the 3rd failure.

User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement