Я хотел бы передать кортеж исключений аргументу autoretry_for
в декораторе task (), но при возникновении исключения повторная попытка не выполняется, а появляется сообщение, в котором говорится, что If Ignore signal occures task shouldn't be retried
.
This это упрощенный пример кода, который должен запускать неограниченное количество попыток, но это не так. Что мне не хватает?
import myapp.celery as celery
@celery.app.task(autoretry_for=(Exception,))
def metphods():
print("Hello")
p = 1/0
Затем я запускаю функцию, но повторных попыток нет.
methods()
Hello
---------------------------------------------------------------------------
Exception Traceback (most recent call last)
<ipython-input-13-864934e00a07> in <module>
4 print("Hello")
5 p = 1/0
----> 6 methods()
~/python/envdev/lib/python3.6/site-packages/celery/local.py in __call__(self, *a, **kw)
189
190 def __call__(self, *a, **kw):
--> 191 return self._get_current_object()(*a, **kw)
192
193 def __len__(self):
~/python/envdev/lib/python3.6/site-packages/celery/app/task.py in __call__(self, *args, **kwargs)
390 self.push_request(args=args, kwargs=kwargs)
391 try:
--> 392 return self.run(*args, **kwargs)
393 finally:
394 self.pop_request()
~/python/envdev/lib/python3.6/site-packages/celery/app/base.py in run(*args, **kwargs)
498 maximum=retry_backoff_max,
499 full_jitter=retry_jitter)
--> 500 raise task.retry(exc=exc, **retry_kwargs)
501
502 task._orig_run, task.run = task.run, run
~/python/envdev/lib/python3.6/site-packages/celery/app/task.py in retry(self, args, kwargs, exc, throw, eta, countdown, max_retries, **options)
686 # raises orig stack if PyErr_Occurred,
687 # and augments with exc' if that argument is defined.
--> 688 raise_with_context(exc or Retry('Task can be retried', None))
689
690 if not eta and countdown is None:
~/python/envdev/lib/python3.6/site-packages/celery/app/base.py in run(*args, **kwargs)
485 def run(*args, **kwargs):
486 try:
--> 487 return task._orig_run(*args, **kwargs)
488 except Ignore:
489 # If Ignore signal occures task shouldn't be retried,
<ipython-input-8-681babc4ecfd> in methods()
3 def methods():
4 print("Hello")
----> 5 raise Exception
6 methods()
Exception: