如何通过Airflow REST API识别依赖DAG、任务及分类依赖关系
Airflow 2.4.0 父子DAG依赖关系实操指南
一、识别DAG间的依赖关系
Airflow 2.4.0中,DAG间的依赖主要通过两种方式定义,从代码或UI就能直接识别:
- 基于Operator的显式依赖
- 子DAG使用
ExternalTaskSensor监听父DAG任务:代码里的external_dag_id参数就是父DAG的ID,external_task_id指定要监听的父DAG任务,看到这个Operator就能确定当前DAG依赖对应的父DAG。 - 父DAG使用
TriggerDagRunOperator触发子DAG:代码里的trigger_dag_id参数就是子DAG的ID,说明父DAG执行完成后会触发该子DAG。
- 子DAG使用
- 基于Dataset的隐式依赖(Airflow 2.3+支持)
父DAG的任务通过outlets产出Dataset(比如@task(outlets=[Dataset("s3://data/output")])),子DAG的任务通过inlets依赖这个Dataset,两者通过Dataset形成依赖关系。
二、判断DAG是否存在依赖
2.1 检查当前DAG是否依赖其他DAG
- 代码层面:搜索DAG文件中的
ExternalTaskSensor实例,查看external_dag_id参数;或者检查任务的inlets配置,看是否关联了其他DAG产出的Dataset。 - UI层面:进入DAG的Graph View,如果有
ExternalTaskSensor类型的任务,鼠标悬停就能看到它监听的外部DAG和任务信息。
2.2 检查当前DAG是否被其他DAG依赖
- 代码层面:遍历所有DAG文件,查找
ExternalTaskSensor中external_dag_id等于当前DAG ID的实例;或者查找TriggerDagRunOperator中trigger_dag_id等于当前DAG ID的实例;另外检查是否有DAG的任务inlets依赖当前DAG产出的Dataset。 - CLI层面:执行命令
airflow dags list-dependencies <你的DAG ID>,直接输出该DAG的上下游依赖关系。
三、通过Airflow REST API获取依赖DAG详情
Airflow 2.4.0的REST API(v1版本)可直接获取DAG的依赖信息,调用前需通过API Token或Basic Auth完成认证:
3.1 获取当前DAG的上游依赖(哪些DAG依赖它)
调用端点:GET /api/v1/dags/{dag_id}/upstream
示例curl请求:
curl -X GET "http://<你的Airflow WebServer地址>:8080/api/v1/dags/your_dag_id/upstream" \ -H "Authorization: Bearer <你的API Token>"
返回结果会列出所有依赖当前DAG的上游DAG,包含DAG ID、描述、调度配置等信息。
3.2 获取当前DAG的下游依赖(它依赖哪些DAG)
调用端点:GET /api/v1/dags/{dag_id}/downstream
示例curl请求:
curl -X GET "http://<你的Airflow WebServer地址>:8080/api/v1/dags/your_dag_id/downstream" \ -H "Authorization: Bearer <你的API Token>"
返回结果会列出当前DAG所依赖的下游DAG详情。
3.3 获取包含依赖信息的完整DAG详情
调用端点:GET /api/v1/dags/{dag_id},返回的JSON数据中dependencies字段会包含该DAG的所有依赖细节,比如关联的Dataset、外部任务依赖等。
内容的提问来源于stack exchange,提问作者vbala vbala
相关产品推荐
相关产品推荐

