Ответ
Количество параллельных процессов для воркера Celery задается параметром concurrency. Это определяет, сколько задач воркер может выполнять одновременно.
Существует несколько способов его настройки:
-
Через флаг командной строки (самый частый способ): Используйте флаг
--concurrencyили его короткую версию-cпри запуске воркера.celery -A my_project worker --loglevel=info --concurrency=8 -
Через конфигурационный файл: Укажите значение в настройках Celery (например, в
celeryconfig.py).# celeryconfig.py worker_concurrency = 8 -
Через переменные окружения: Celery может считывать некоторые настройки из переменных окружения.
export CELERY_WORKER_CONCURRENCY=8 celery -A my_project worker --loglevel=info
Рекомендации по выбору значения
- CPU-bound задачи (интенсивные вычисления):
concurrencyдолжно быть равно количеству ядер CPU на машине. - I/O-bound задачи (сетевые запросы, работа с файлами/БД):
concurrencyможно ставить значительно выше количества ядер (например, 16, 32, 100+), так как процессы будут часто простаивать в ожидании ответа. В этом случае также рекомендуется использовать пулы на основеgeventилиeventlet(--pool=gevent) для более эффективной работы с I/O.