gpt4 book ai didi

Airflow:如何获取一个任务的返回输出来设置下游任务运行的依赖关系?

转载 作者:行者123 更新时间:2023-12-02 17:12:30 24 4
gpt4 key购买 nike

我们有一个 kubernetes pod 操作符,它将生成一个 python 字典,该字典将定义要运行的下游 kubernetes pod 操作符及其依赖项以及要传递给每个操作符的环境变量。

如何将此 python 字典对象放回执行器的上下文(或者是工作线程的上下文?),以便 Airflow 可以生成下游 kubernetes 运算符?

我查看了 BranchOperator 和 TriggerDagRunOperator 以及 XCOM 推/拉以及 Variable.get 和 Variable.set,但似乎没有什么效果。

最佳答案

We have a kubernetes pod operator that will spit out a python dictionary that will define which further downstream kubernetes pod operators to run

这是可能的,尽管不是按照您尝试的方式。你必须拥有所有可能的 KubernetesPodOperator s已经在您的工作流程中,然后跳过那些不需要运行的

执行此操作的一种优雅方法是附加 ShortCircuitOperator 在每个 KubernetesPodOperator 之前读取 XCom (字典)由上游发布KubernetesPodOperator并决定是否继续下游任务。

EDIT-1

实际上,更干净的方法就是 raise an AirflowSkipException 在您想要跳过的任务中(而不是使用单独的 ShortCircuitOperator 来执行此操作)


How do I get this python dictionary ... so that airflow can spawn the downstream kubernetes operators..

没有。您无法根据上游任务的输出动态生成新任务

这样想:对于 scheduler必须提前了解所有任务(它们的 task_idtrigger_rulepriority_weight 等),以便能够在正确的时间到来时执行它们。如果任务不断动态出现,那么 Airflow的调度程序必须类似于操作系统调度程序(!)。有关更多详细信息,请阅读 thisEDIT-1 部分回答

关于Airflow:如何获取一个任务的返回输出来设置下游任务运行的依赖关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55131480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com