Asyncio + Celery: распределить задания - PullRequest
0 голосов
/ 09 июля 2019

Я использую 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 с многопроцессорной обработкой

Но я не уверен, является ли это основной причиной моей проблемы и как правильно использовать ее в моем случае.

Есть идеи о том, что я делаю не так?

...