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

Airflow中@once调度规则与start_date参数如何配合使用?

问题根因

你遇到的DAG未触发、next-execution为None的问题,和@once调度的逻辑直接相关:@once的规则是仅在DAG被调度器首次加载、且当前时间晚于start_date时,生成唯一一次DAG运行实例,只要该DAG曾经生成过运行实例(无论运行成功/失败/被删除),都不会再次触发,且catchup参数对@once调度完全不生效。

start_date正确配置方式

不需要使用动态的days_ago,直接设置为任意早于你当前部署时间的静态日期即可,避免动态日期带来的调度歧义,示例配置如下:

from datetime import datetime

# DAG核心配置
schedule_interval='@once',
start_date=datetime(2023, 1, 1), # 替换为任意早于当前时间的静态日期
catchup=False, # 对@once调度无意义,设为False减少不必要的调度干扰

触发运行操作步骤

  1. 进入Airflow WebUI,删除该DAG所有历史运行记录,清除调度器中该DAG已触发过的标记
  2. 确保DAG处于未暂停状态,重启Airflow调度器服务完成DAG重载,重载后会立即触发一次DAG运行

长驻运行配置注意事项

要保证任务启动后持续运行不被Airflow主动终止,需要额外配置两个超时参数:

  • 给运行任务的Operator设置execution_timeout=None,关闭单任务超时限制
  • 给DAG本身设置dagrun_timeout=None,关闭DAG运行整体超时限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:57:04