0

件名が言うように、定義された "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:
                [...]

ありがとう、ローリス

4

0 に答える 0