正如主题所说,过去重试直到达到定义的“max_retries”计数的任务现在有时会在随机次数后停止这样做:/。有时他们会在几百次之后停止重试,有时只是几次之后。
我注意到的是,如果我重新启动“芹菜节拍”过程 - 几分钟后,一些“相当”几个小时的任务会重新开始重试。
无法准确确定它何时开始发生,但可能是在升级 Celery、RabbitMQ 或 Django 之后。
有人知道为什么会这样吗?
我在跑:
Django: 1.7.3
RabbitMQ: 3.4.2
celery:3.1.17
kombu:3.0.24
billiard:3.3.0.19
python:2.7.3
py-amqp:1.4.6
芹菜设置:
CELERY_ACKS_LATE = True
CELERY_SEND_EVENTS = True
CELERY_TRACK_STARTED = True
CELERY_DISABLE_RATE_LIMITS = True
CELERYD_PREFETCH_MULTIPLIER = 1
CELERY_SEND_TASK_SENT_EVENT = True
任务代码看起来不错。像这样:
class ABCTask(AbortableTask):
ignore_result = False
max_retries = 288*5
def run(self):
try:
[...]
except NoAvailableDevices as e:
try:
self.retry(exc=e)
except MaxRetriesExceededError, e:
[...]
谢谢,劳里斯