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

Airflow快速入门:CLI执行任务报错DagRunNotFound

问题原因分析

airflow tasks run命令要求第三个参数(execution_date)必须对应一个已存在的DagRun实例,而非任意指定的日期。你指定的2015-01-01对应的DagRun并未被创建,因此触发DagRunNotFound错误:

  • 示例DAG的调度器默认不会为过旧的历史日期自动生成DagRun(即使start_date早于该日期,standalone模式下调度器通常只处理近期的调度周期);
  • Web UI执行成功是因为UI触发操作会自动创建新的DagRun(run_id格式为manual__xxxx),而CLI的tasks run不会自动创建DagRun。
解决方案

方案1:手动创建指定execution_date的DagRun后执行任务

  1. 先为目标日期创建DagRun:
    airflow dags trigger example_bash_operator --execution-date 2015-01-01
    
  2. 再执行任务命令:
    airflow tasks run example_bash_operator runme_0 2015-01-01
    

方案2:通过run_id绑定手动触发的DagRun执行任务

如果你不需要指定历史日期,可以直接触发新DagRun并使用其run_id执行任务:

  1. 触发DagRun并获取run_id(需安装jq工具,或从Web UI的DAG运行记录中复制):
    airflow dags trigger example_bash_operator --output json | jq -r '.run_id'
    
  2. 替换run_id执行任务:
    airflow tasks run example_bash_operator runme_0 --run-id manual__2024-05-20T12:34:56+00:00
    

方案3:开启DAG的catchup自动生成历史DagRun

修改example_bash_operator的DAG定义,确保catchup=True,然后重启Airflow调度器:

with DAG(
    'example_bash_operator',
    start_date=datetime(2015, 1, 1),
    catchup=True,  # 确保开启自动补跑
    # 其他配置...
):
    # 任务定义...

等待调度器生成2015-01-01对应的DagRun后,再执行airflow tasks run命令。

排查验证步骤
  • 执行airflow dags list确认example_bash_operator已被加载;
  • 执行airflow dags list-runs example_bash_operator查看已存在的DagRun,确认目标日期的实例是否存在。

内容的提问来源于stack exchange,提问作者Jason

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 00:25:28