是否可通过外部方式查询Airflow中DAG内各任务的运行状态?
Airflow 指定DAG全量任务运行状态查询方案
Airflow 官方REST API已经原生支持你需要的能力,无需额外定制开发接口,具体实现方式如下:
适用版本
Airflow 2.0及以上版本的稳定REST API可直接使用,1.x版本的实验性API逻辑一致,仅请求路径存在差异。
核心调用逻辑
你可以通过两个公开端点的组合,或者单端点过滤直接拿到目标数据:
方案1:查询最新一次DAG运行的所有任务状态
- 第一步调用接口获取指定DAG的最新运行ID:
GET /dags/<替换为你的DAG_ID>/dagRuns?limit=1&order_by=-start_date
返回结果中的dag_run_id字段即为该DAG最近一次运行的唯一ID - 第二步调用接口拉取该次运行下所有任务的状态:
GET /dags/<替换为你的DAG_ID>/dagRuns/<上一步获取的dag_run_id>/taskInstances
该接口返回结果会列出该次DAG运行内所有任务的实例信息,其中state字段会明确标注running(运行中)、up_for_retry(重试中)、success(成功)、failed(失败)、queued(排队中)等所有状态。
方案2:单次调用直接拉取指定DAG的全量任务状态
如果不需要限定DAG运行次数,可直接调用任务实例的批量查询接口:GET /dags/<替换为你的DAG_ID>/taskInstances
你可以通过追加execution_date_gte、execution_date_lte参数过滤指定时间范围内的任务实例,也可以追加state参数直接筛选你关注的运行中、重试中的任务,无需二次处理返回结果。
重点字段说明
返回结果中你重点关注几个字段即可满足需求:
task_id:对应DAG内定义的任务名称state:任务当前运行状态try_number:任务当前重试次数,可直接用来识别重试任务execution_date:任务所属DAG运行的执行时间
内容的提问来源于stack exchange,提问作者zDJ
相关产品推荐
相关产品推荐

