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

Airflow DAG未触发咨询:动态设置start_date后无执行记录

问题分析与解决方案

你的DAG从未触发的核心问题在于动态设置了start_date,这直接违背了Airflow的调度逻辑。

为什么动态start_date会导致任务不触发?

Airflow的调度器依赖固定的start_date来计算任务的执行时间窗口。当你用datetime.now().date()动态生成start_date时,每次Airflow解析DAG文件(默认每隔30秒执行一次),start_date都会被更新为当天的10点。这会让调度器一直认为这个DAG的“起始时间”是当前最新的日期,永远不会达到“start_date + schedule_interval”的触发时间点——毕竟今天的10点加一天是明天的10点,但等到明天,DAG解析时start_date又会变成明天的10点,触发时间再次延后到后天,陷入无限循环。

修复步骤

  1. 将start_date设置为固定的过去日期
    把start_date改为一个明确的、已经过去的时间点,比如:

    start_date=datetime(2024, 5, 19, 10, 0)  # 替换为你实际想要开始调度的日期
    

    这样调度器就能基于这个固定时间计算出第一次执行时间是2024-05-20 10:00,之后每天10点自动触发一次。

  2. 检查其他关键配置细节

    • 确认你的DAG在Airflow UI中处于启用状态(没有被暂停)。
    • 检查Airflow调度器(scheduler)服务是否正在正常运行。
    • 核对时区设置:如果Airflow实例的默认时区和你预期的不一致,可能会导致触发时间偏移,可以通过airflow.cfg中的default_timezone配置项确认。

补充说明

Airflow的调度逻辑是“基于过去的周期”触发任务:比如schedule_interval='@daily'的任务,会在每天的start_date时间点触发,处理的是前一天的数据窗口(如果你的任务涉及数据处理的话)。固定start_date是保证调度正常运行的核心要求,绝对不要用动态生成的时间作为start_date。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 08:47:42