我正在努力解决这个异步任务处理设置问题。到目前为止,我一直在考虑使用Celery,但尚未锁定任何东西。唯一的要求是我可以将Redis用作代理并将任务分配到多个节点上。
pin
说明:
那么问题是,我该如何用芹菜做这件事?
答案 0 :(得分:1)
可以使用和弦和链功能完成此操作,请看一下示例。它应该适合您的需求。
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()