Код: Выделить всё
from celery import shared_task
# external library that uses multiprocessing
from mp_module import mp_func
@shared_task
def long_task(n_proc):
mp_func(n_proc) # takes a long time, but uses multiprocessing to speed it up
- Параллельная распределенная задача Celery с многопроцессорной обработкой
- сельдерей: демоническим процессам не разрешено иметь дочерних элементов
- Запуск многопоточного модуля с сельдереем; демоническим процессам не разрешено иметь дочерних элементов
- Разделение задачи celery на отдельные задачи, чтобы пул предварительной обработки сельдерея мог предварительно выполнить многопроцессорную обработку задачи, которая изначально была одной функцией.
- Используйте метод billiard вместо многопроцессорной обработки внутри задачи celery.
- Используйте аргумент -P threads работника (т. е. celery worker -P threads).
Есть ли способ использовать Celery, чтобы он мог разделить одну задачу на несколько рабочих процессов, когда в этой задаче используется модуль многопроцессорности, без рефакторинга кода? Если нет, то какой будет простейшая альтернатива такого рода иерархическому управлению задачами (управление несколькими задачами, каждая из которых запускает несколько процессов)?
Подробнее здесь: https://stackoverflow.com/questions/798 ... multiproce
Мобильная версия