Я использую Celery и asyncio, и у меня есть некоторая функция, связанная с процессором.
Моя проблема:
Когда я запускаю одну задачу, это занимает X секунд. Когда я пытаюсь выполнить 10 задач, это занимает примерно 10Х секунд.
Текущая реализация выглядит следующим образом:
job = group(custom_func.s(param1, param2, param3, param4, param5) for param3, param4 in data)
job_result = job.apply_async()
job_result.get()
@celery_app.task
def custom_func(param1, param2, param3, param4, param5):
loop = asyncio.new_event_loop()
coro = doing_some_cpu_bound_things()
result = loop.run_until_complete(coro)
loop.close()
return result
После поиска возможных решений я нашел этот вопрос:
Параллельно распределенная задача Celery с многопроцессорной обработкой
Но я не уверен, является ли это основной причиной моей проблемы и как правильно использовать ее в моем случае.
Есть идеи о том, что я делаю не так?