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

修改Airflow DAG的end_date后未触发新DagRun,如何解决?

解决Airflow月度DAG更新end_date后不触发新DagRun的问题

这种情况在Airflow里挺常见的——当你扩展了end_date但调度器没自动生成新的DagRun,核心原因是调度器已经完成了原时间范围的调度计算,不会主动重新扫描扩展后的时间区间。不用改DAG ID也能解决,给你几个靠谱的方案:

方案1:手动触发目标月份的DagRun

这是最直接且安全的方法,毕竟你只需要补跑一个月:

  • 通过UI操作:进入你的DAG详情页,点击右上角的「Trigger DAG w/ config」,在弹出的窗口里,把execution_date设置为2018-04-01(因为@monthly调度的DagRun,execution_date对应要处理的月份第一天,2018年5月运行的任务对应的就是2018-04-01这个execution_date),然后点击触发即可。
  • 通过CLI命令:如果习惯用命令行,Airflow 2.x可以执行:
    airflow dags trigger --execution-date 2018-04-01 your_dag_id
    
    旧版本(1.x)命令是:
    airflow trigger_dag -e 2018-04-01 your_dag_id
    

方案2:让调度器自动补跑

如果希望调度器自己生成这个DagRun,可以试试这几步:

  1. 确保你的DAG的catchup参数设置为True(如果之前是False的话)。这个参数控制调度器是否补跑时间范围内缺失的DagRun,开启后调度器会重新计算新的end_date对应的未生成的运行。
  2. 重启Airflow调度器服务,或者在UI的DAG列表页勾选你的DAG,点击「Refresh DAGs」按钮,强制调度器重新读取DAG配置。
  3. 等几分钟,调度器应该会自动生成execution_date=2018-04-01的DagRun并执行。完成后你可以把catchup改回False,避免后续意外补跑。

方案3:检查元数据缓存(进阶操作)

如果上面的方法都没生效,可能是Airflow元数据库里的缓存信息影响了调度:

  • 可以登录Airflow的元数据库(比如PostgreSQL或MySQL),查看dag_run表,确认是否已经存在execution_date='2018-04-01'的记录。如果没有,说明调度器确实没生成,这时候再用方案1或2重试。
  • 不推荐新手直接修改元数据库记录,容易破坏数据一致性,优先用前面的方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:50:39