Retrying tasks with Django-Celery - Django/Celery Retrying tasks with Django-Celery - Django/Celery python python

Retrying tasks with Django-Celery - Django/Celery


You can set your retry parameters in the decorator:

@task(default_retry_delay=5 * 60, max_retries=12)def foo(bar):  try:      ...  except Exception, exc:      raise foo.retry(exc=exc)


The task needs to accept keyword arguments, they are used to pass information amongst other about the retry count. I think the code should look like this:

from celery.decorators import task@task()def add(x, y, **kwargs):    if not x or not y:        try:            raise Exception("test error")        except Exception, e:            add.retry(args=[x, y], exc=e, countdown=30, kwargs=kwargs)    return x+y

**kwargs need to be added to the signature of the add function, and passed as kwargs=kwargs when calling retry.

Note: this style was deprecated with the release of celery 2.2.