我想在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:
目前没有回答
相关问题 更多 >
编程相关推荐