In Celery, you can retry any task in case of exception. You can do it like so:
retry
@task(max_retries=5) def div(a, b): try: return a / b
Celery (since version 4.0) has exactly what you were looking for:
@app.task(autoretry_for=(SomeException,)) def my_task(): ...
See: http://docs.celeryproject.org/en/latest/userguide/tasks.html#automatic-retry-for-known-exceptions