正如主题所说,过去在达到定义的“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:
[...]
谢谢, 劳里斯