随机尝试次数后,任务将停止重试

时间:2015-01-21 14:53:36

标签: celery celerybeat

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

谢谢, 劳里斯

0 个答案:

没有答案