我想构建一些东西,我需要捕获所有叶子任务并为它们添加下游依赖项,以便在我们的数据库中完成作业。有没有一种简单的方法可以在Airflow中找到DAG的所有叶节点?
答案 0 :(得分:1)
使用upstream_task_ids
和downstream_task_ids
@property
from BaseOperator
def get_start_tasks(dag: DAG) -> List[BaseOperator]:
# returns list of "head" / "root" tasks of DAG
return [task for task in dag.tasks if not task.upstream_task_ids]
def get_end_tasks(dag: DAG) -> List[BaseOperator]:
# returns list of "leaf" tasks of DAG
return [task for task in dag.tasks if not task.downstream_task_ids]
Type-Annotations
来自Python 3.6+