我很难理解Airflow中的BranchPythonOperator是如何工作的。我知道它主要用于分支,但是对于传递给任务的内容以及我需要从上游任务传递/期望的文档感到困惑。
鉴于文档on this page中的简单示例,对于名为:
的上游任务和分支的2个下游任务,源代码的外观是什么? Airflow如何知道运行run_this_first
而不是branch_a
?上游任务的输出在哪里被注意/读取?
答案 0 :(得分:17)
您的BranchPythonOperator是使用python_callable
创建的,它将是一个函数。该函数应根据您的业务逻辑返回您已连接的紧急下游任务的任务名称。这可能是紧邻下游的1到N个任务。下游任务 HAVE 无需读取,但您可以使用xcom传递元数据。
def decide_which_path():
if something is True:
return "branch_a"
else:
return "branch_b"
branch_task = BranchPythonOperator(
task_id='run_this_first',
python_callable=decide_which_path,
trigger_rule="all_done",
dag=dag)
branch_task.set_downstream(branch_a)
branch_task.set_downstream(branch_b)
设置trigger_rule
或其他所有内容都很重要,因为默认设置为all_success
。