You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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。
  • 基于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 17:33:32