获取所有气流叶节点/任务

Ace*_*rey 5 python airflow apache-airflow

我想构建一些我需要捕获所有叶子任务并为它们添加下游依赖项以在我们的数据库中完成作业的东西.有没有一种简单的方法可以在Airflow中找到DAG的所有叶节点?

y2k*_*ham 4

使用upstream_task_idsdownstream_task_ids @property来自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]
Run Code Online (Sandbox Code Playgroud)

Type-AnnotationsPython 3.6+


更新1

现在AirflowDAG模型具有强大的@property功能,例如