Как избежать игнорирования сигнала с помощью сельдерея autoretry_for? - PullRequest
0 голосов
/ 05 августа 2020

Я хотел бы передать кортеж исключений аргументу 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: 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...