Python 如何使用“分支”操作符在气流DAG中分支多条路径?

Python 如何使用“分支”操作符在气流DAG中分支多条路径?,python,airflow,Python,Airflow,这就是我想要的,但我不知道如何在气流中实现这一点,因为这两项任务都在执行中 总结如下: T1执行 T2执行 根据T2的输出,我想去option\u 1->complete或option\u 2->Do\u x,Do\u y->complete 我应该如何构造这个?我的当前代码是: (t1>>t2>>选项\u 1>>完成) (t1>>t2>>选项2>>完成) 在这种情况下,t2是一个分支操作符 我还尝试了的语法。。。[选项1,选项2]但是我需要一个完全独立的路径来执行,而不仅仅是一个要切换

这就是我想要的,但我不知道如何在气流中实现这一点,因为这两项任务都在执行中

总结如下:

  • T1执行
  • T2执行
  • 根据T2的输出,我想去
    option\u 1->complete
    option\u 2->Do\u x,Do\u y->complete
我应该如何构造这个?我的当前代码是:

(t1>>t2>>选项\u 1>>完成)
(t1>>t2>>选项2>>完成)
在这种情况下,t2是一个分支操作符


我还尝试了
的语法。。。[选项1,选项2]但是我需要一个完全独立的路径来执行,而不仅仅是一个要切换的任务。

代码中的依赖性对于分支是正确的。确保
BranchPythonOperator
根据所需的逻辑,在分支开始时返回任务的
task\u id
。有关
分支ythonoperator
的更多信息。最后一个重要注意事项与“完成”任务有关。由于分支聚合到“complete”任务上,请确保将
TriggerRule
设置为“none\u failed”(您也可以使用
TriggerRule
类常量),这样任务就不会被跳过

快速代码测试供您参考:

from airflow.models import DAG
from airflow.operators.dummy import DummyOperator
from airflow.operators.python import BranchPythonOperator
from airflow.utils.trigger_rule import TriggerRule

from datetime import datetime


DEFAULT_ARGS = dict(
    start_date=datetime(2021, 5, 5),
    owner="airflow",
    retries=0,
)

DAG_ARGS = dict(
    dag_id="multi_branch",
    schedule_interval=None,
    default_args=DEFAULT_ARGS,
    catchup=False,
)


def random_branch():
    from random import randint

    return "option_1" if randint(1, 2) == 1 else "option_2"


with DAG(**DAG_ARGS) as dag:
    t1 = DummyOperator(task_id="t1")

    t2 = BranchPythonOperator(task_id="t2", python_callable=random_branch)

    option_1 = DummyOperator(task_id="option_1")

    option_2 = DummyOperator(task_id="option_2")

    do_x = DummyOperator(task_id="do_x")

    do_y = DummyOperator(task_id="do_y")

    complete = DummyOperator(task_id="complete", trigger_rule=TriggerRule.NONE_FAILED)

    t1 >> t2 >> option_1 >> complete
    t1 >> t2 >> option_2 >> do_x >> do_y >> complete