Зависит ли количество процессов celeryd от параметра --concurrency?

Мы запускаем Celery за Supervisor и запускаем его с

celeryd --events --loglevel=INFO --concurrency=2

Однако это создает граф процессов глубиной до трех слоев и содержит до 7 процессов celeryd (Supervisor порождает один celeryd, который порождает несколько других, которые снова порождают процессы). Наша машина имеет два ядра процессора.

Все ли эти процессы работают над задачами? Может быть, некоторые из них просто рабочие пулы? Как параметр --concurrency связан с количеством фактически созданных процессов?


person Hannes Struß    schedule 01.08.2012    source источник


Ответы (1)


У вас не должно быть 7 процессов, если --concurrency равно 2.

Фактические запущенные процессы:

  • Основной потребительский процесс

    Делегаты работают с рабочим пулом

  • Рабочий пул (это число, которое решает --concurrency)

Итак, это 3 процесса с параллелизмом двух.

Кроме того, очень легкий процесс, используемый для очистки семафоров, запускается, если включено force_execv (что по умолчанию, если вы используете какой-либо другой транспорт, кроме redis или rabbitmq).

Обратите внимание, что в некоторых случаях списки процессов также включают потоки. рабочий может запустить несколько потоков при использовании транспорта, отличного от rabbitmq/redis, включая один поток посредника, который всегда запускается, если не включено CELERY_DISABLE_RATE_LIMITS.

person asksol    schedule 01.08.2012
comment
Это не соответствует моему опыту. У меня есть --concurrency=1 --beat, но порождаются 4 процесса celeryd. - person Cerin; 12.06.2013
comment
Я использую DatabaseTransport и Celery 3.0, а с --concurrencry=1 получаю 6 процессов, как и в случае с OP. - person Gill Bates; 20.03.2014
comment
@asksol Я также испытываю 4 процесса celeryd, когда --concurrency=1 и с двумя рабочими процессами. Мне любопытно, почему это так, большое спасибо. - person fpghost; 27.04.2017