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

Airflow调度器出现TypeError:v1.9中scheduler_interval='@once'用法是否变更?

问题分析与解决方案

嘿,我之前升级Airflow到1.9版本时也碰到过一模一样的问题!你猜的完全没错,问题根源就是scheduler_interval='@once'的逻辑变更。

Airflow 1.9对@once的调度机制做了关键调整:

  • 在1.9之前的版本,设置@once的DAG只要被调度器加载,就会立即触发一次执行,不管start_date是过去还是当前时间。
  • 但升级到1.9后,@once的执行逻辑和其他调度间隔对齐了:它会基于DAG的start_date计算出唯一的执行时间点,如果这个时间点在调度器启动之前,调度器会判定这个一次性任务已经“过期”,不会主动触发它。

针对你的极简DAG,这里有几个快速解决办法:

  • 调整start_date为当前/未来时间:把DAG的start_date改成datetime.datetime.now()或者未来的某个时间点,然后重启Airflow调度器。这样调度器会识别到新的未过期执行点,自动触发一次任务。
  • 手动触发DAG:如果不想修改start_date,直接在Airflow UI里找到这个DAG,点击「Trigger DAG」按钮手动执行——毕竟@once本身就是一次性任务,手动触发完全符合它的设计意图。
  • 检查catchup配置:如果你的DAG设置了catchup=False,结合过去的start_date,调度器会直接跳过补跑逻辑,这也会导致@once任务不触发。可以临时把catchup改成True,等任务执行完成后再改回去。

你还可以去调度器日志里找类似这样的条目验证问题:

INFO - Skipping DAG <你的DAG名称> because start_date is in the past and scheduler_interval is @once

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:47:49