Выполняет ли eventlet с сельдереем задачи параллельно?

Этот пост является продолжением моего предыдущего поста - сельдерей, как реализовать единую очередь с параллельным выполнением нескольких рабочих процессов?

Я реализовал сельдерей для работы с eventlet с помощью этой команды: -

celery -A project worker -P eventlet -l info --concurrency=4

Я вижу, что мои задачи быстрее перемещаются в активный список (в цвете), но я не уверен, выполняются ли они параллельно? У меня есть 4-ядерный сервер для производства, но я не использую все ядра одновременно.

Мой вопрос: -

как я могу использовать все 4 ядра для параллельного выполнения задач?


person Manish Gupta    schedule 18.03.2017    source источник


Ответы (1)


Оба типа обработчиков событий и gevent обеспечивают отличное решение для параллелизма за счет остановки параллелизма до 1. Чтобы обеспечить истинное параллельное выполнение задач и использование ядер, запустите несколько экземпляров Celery на одном компьютере.

Я знаю, что это идет вразрез с тем, что имеют в виду популярные дистрибутивы Linux, поэтому просто игнорируйте системные пакеты и создайте отличную конфигурацию с нуля. Сервисный шаблон systemd — ваш друг.

Другой вариант — запустить Celery с пулом prefork, вы получаете параллелизм за счет задержки параллелизма с количеством рабочих.

person temoto    schedule 18.03.2017