繁体   English   中英

Airflow 分支Python运算符链接

[英]Airflow BranchPythonOperator chaining

我正在尝试使用 Airflow BranchPythonOperator。 我得到了错误:

def next_task(x):
  if x : return "branch_data"
  else: return "branch_no_data"

branch_task  = BranchPythonOperator(
   task_id = 'branch_task',
   python_callable = next_task,
   op_args = [x],
   dag = dag
)

branch_no_data=DummyOperator(task_id="branch_no_data", dag=dag)
branch_data=DummyOperator(task_id="branch_data", dag=dag)
join_task=DummyOperator(task_id="join_task", dag=dag)
branch_task >> [branch_data, branch_no_data ]  >>  join_task

我只需要执行 2 个任务(branch_data、branch_no_data)之一。 以下是我实施任务链接的失败尝试。 我得到了错误:

branch_task >> [branch_data, branch_no_data ]  >>  join_task
TypeError: unsupported operand type(s) for >>: 'BranchPythonOperator' and 'list'

Airflow 不允许您将列表链接到另一个任务。 一个任务可以 output 进入任务列表,但任务列表不能链接到单个任务。 因此, list类型不支持>>操作数的错误。

为了您自己的清晰和避免任何潜在问题,最好单独写出链而不列出列表。

可以使用的代码的 2 个版本是:

branch_task >> branch_data    >> join_task
branch_task >> branch_no_data >> join_task

或者

branch_task    >> [ branch_data, branch_no_data ]
branch_data    >> join_task
branch_no_data >> join_task

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM