我想构建一些我需要捕获所有叶任务并向它们添加下游依赖项以在我们的数据库中完成作业的东西。有没有一种简单的方法可以在 Airflow 中找到 DAG 的所有叶节点?
最佳答案
使用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+
UPDATE-1
现在 Airflow DAG
model有强大@property
functions喜欢
关于airflow - 获取所有 Airflow 叶节点/任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43529948/