| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | ================ Retrying Tasks================Retrying a task if something fails==================================Simply use :meth:`celery.task.base.Task.retry` to re-sent the task, it willdo the right thing, and respect the :attr:`celery.task.base.Task.max_retries`attribute:.. code-block:: python    class SendTwitterStatusTask(Task):            def run(self, oauth, tweet, **kwargs):            try:                twitter = Twitter(oauth)                twitter.update_status(tweet)            except (Twitter.FailWhaleError, Twitter.LoginError), exc:                self.retry(args=[oauth, tweet], exc=exc, **kwargs)Here we used the ``exc`` argument to pass the current exception to:meth:`celery.task.base.Task.retry`. At each step of the retry this exceptionis available as the tombstone (result) of the task, when:attr:`celery.task.base.Task.max_retries` has been exceeded this is the exceptionraised. However, if an ``exc`` argument is not provided the:exc:`celery.task.base.RetryTaskError` exception is raised instead.  Setting a custom delay for retries.===================================The default countdown is in the tasks:attr:`celery.task.base.Task.default_retry_delay` attribute, which bydefault is set to 3 minutes.You can also provide the ``countdown`` argument to:meth:`celery.task.base.Task.retry` to override this default... code-block:: python    class MyTask(Task):        default_retry_delay = 30 * 60 # retry in 30 minutes        def run(self, x, y, **kwargs):            try:                ...            except Exception, exc:                self.retry([x, y], exc=exc,                           countdown=60 # override the default and                                        # retry in 1 minute                           **kwargs)
 |