2016-09-06 3 views
3

Я использую сельдерей 3.1.23.Сельдерей убивает процессы

код Задача очень проста:

@app.task(bind=True, max_retries=None, default_retry_delay=settings.CELERY_RECONNECT_TIME) 
def analize_text(self, **kwargs): 
    print 'test' 
    return 1 

запускаю сельдерей эту команду:

сельдерея -A задач рабочего --loglevel = Информация --concurrency = 4 -n analize_text -Q analize.analize_text -Ofair

Итак, я использую 4 процессора. Проблема в том, что сельдерей периодически убивает рабочих и вместо них запускает новые. Новый рабочий имеет новый номер в журнале и новый PID. Это мой журнал https://dpaste.de/N1Vk

Зачем это происходит? Это ошибка?

ответ

1

Это зависит от CELERY_MAX_TASKS_PER_CHILD, т. Е. Количества задач, которые рабочий должен выполнить до того, как их переработают, по умолчанию нет ограничений.

http://docs.celeryproject.org/en/latest/configuration.html#std:setting-CELERYD_MAX_TASKS_PER_CHILD

Таким образом, конфигурация сельдерея может быть с этим пределом установлен в некоторых странах с низким числом, следовательно, ваши работники становятся переработаны. Вы можете увидеть больше информации в сельдерее stats.