Это можно сделать с помощью функций аккордов и цепочек, пожалуйста, посмотрите на пример. Это должно соответствовать вашим потребностям.
from celery import Celery, chord, chain
backend = 'redis://redis:6379/'
app = Celery(result_backend=backend, backend=backend)
@app.task
def task1():
argument = 123
return chord([
chain(task2.s(argument), task3.s()),
chain(task2.s(argument), task3.s()),
chain(task2.s(argument), task3.s()),
])(task4.s())
@app.task
def task2(argument):
pass
@app.task
def task3(result_task2):
pass
@app.task
def task4(result):
pass
task1.apply_async()