【发布时间】:2015-08-19 14:50:09
【问题描述】:
我有一个关于在 chunk 中重试 celery 任务的问题。我的python版本是2.7.9,我的celery版本是3.1.18
当块中的单个任务失败时,似乎不会重试,而是整个块一起失败。
首先,有时会失败的任务:
@app.task(bind=True, default_retry_delay=30, max_retries=5)
def sometimes_add(self, x, y):
try:
if random.randint(0, 10) < 8:
return x + y
else:
raise Exception("I'm failing!")
except Exception as e:
raise self.sometimes_add.retry(exc=e)
任务调用了 100 次,分成 5 块,因此有 20 个任务:
sometimes_add.chunks(zip(range(100), range(100)), 5).apply_async()
我希望块中的失败任务一旦失败就会重试,但似乎根本没有任务被重试,整个 5 个任务的块作为一个单元失败。
我对 Celery 很陌生,所以我肯定错过了使用任务分块的最佳方法的一些相当基本的东西。如果是这样,我将不胜感激任何反馈。非常感谢!
【问题讨论】: