如何避免芹菜自动测定忽略信号?

2024-10-02 10:24:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在task()decorator中向autoretry_for参数传递一个异常元组,但是当引发异常时,不会重试,而是会显示一条消息If Ignore signal occures task shouldn't be retried

这是一个简化的代码示例,本应触发无限次重试,但实际上并非如此。我错过了什么

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: 

Tags: runinpyselfapptasklibpackages

热门问题