Можем ли мы запустить 2 групповые параллельные задачи, используя холст django для задач сельдерея - PullRequest
0 голосов
/ 23 октября 2018

вот так я добавил в своем celery.py

@app.task(bind=True)
def execute_analysis(id_=1):
    task1 = group(news_event_task.si(i) for i in range(10))
    task2 = group(parallel_task.si(i) for i in range(10))
 return chain(task1, task2)()

1 Ответ

0 голосов
/ 25 октября 2018

Проблема : Вы вызываете слишком много функций (заданий) в одном и том же процессе последовательно, поэтому, если какое-либо задание (удаление данных новостей) блокируется, все остальные будут ждать и могут перейти в состояние блокировки.

Решение : Лучшим вариантом было бы запускать news_event_task с задержкой и, при каждом новостном сообщении news_event_task, если вы хотите вызвать parallel_task, то и то, и другое можно выполнить в одном и том же процессе.Таким образом, теперь все задачи будут выполняться параллельно (используйте для этого celery eventlet ).

Другим подходом может быть отправка этих задач в очередь (вместо сохранения их последовательности в памяти), а затем обработкакаждое новостное задание по очереди.

...