我真的很困惑这里作为Celery的新手,并希望在客户端(ipython)使用Celery Canvas(工作流)原语(如Chain,Chord)和客户端(ipython)提交DAG时,对芹菜与消息代理如何处理任务依赖关系的一些输入基。
假设我有一个DAG,其中A - > (B,C) - > D(Diamond DAG)其中A将首先运行,然后是B和C并行运行,B和C的输出将用作D中的输入。
我能够想出一个DAG,即
wf = (A.s(2, 2) | group(B.s(), C.s(25)) | D.s(1000)).delay()
我的理解是1)客户端提交DAG 2)Celery将此DAG转换为消息(通常使用JSON)3)将此消息发送到消息代理4)消息代理对依赖性有一些了解吗? (不确定)并基于依赖关系将任务放入队列5中。已订阅队列的工作人员接受任务并执行。
我很困惑这里是谁,以确保工作人员根据依赖性执行任务。芹菜工人是否对依赖有所了解?经纪人是否有某种类型的元数据管理?
此处的任何输入都将受到赞赏。谢谢!
答案 0 :(得分:0)
实际上芹菜使用kombu作为信息传递机制,并且芹菜做不同工作的芹菜的依赖性很少,使芹菜成为最终用户/开发者不了解许多/多样化任务的高级框架。你只需要使用芹菜来完成任务和其他工作,并在特定的库中使用kombu,billiard等来完成他们的任务。您最好检查一下芹菜的源代码,以获得更多的洞察力。