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

Airflow DAG未按指定时间自动触发问题求助

DAG未按计划执行的排查方向

先看你提供的代码,首先存在语法错误:DAG定义的最后缺少闭合括号),这会直接导致Airflow无法加载这个DAG,先补上这个括号:

DAG = DAG(
    dag_id='ietl_tv3_redge_devices',
    default_args=ARGS,
    schedule_interval= '30 7 * * *',
    max_active_runs=1
)  # 补充缺失的闭合括号

除此之外,还有以下常见原因需要逐一排查:

  • 导入语句缺失:代码中用到了DAG、timedelta、airflow.utils.dates.days_ago,但未显示导入逻辑。如果没有导入这些模块,DAG会加载失败,需确保代码开头包含:

    from airflow import DAG
    from datetime import timedelta
    import airflow.utils.dates
    
  • 动态start_date的问题:你使用airflow.utils.dates.days_ago(1)作为起始日期,这是动态生成的时间,每次调度器解析DAG时该日期都会变化。Airflow的调度逻辑基于start_date + schedule_interval计算首次执行时间,动态start_date会导致调度器无法正确判断执行窗口,建议改为固定日期:

    'start_date': datetime(2024, 5, 20),  # 替换为早于当前时间的固定起始日期
    

    (使用前需导入from datetime import datetime)

  • 时区不匹配:Airflow默认使用UTC时区,如果你设置的30 7 * * *是本地时间(如北京时间),实际触发时间会和预期有偏差。可以在DAG定义中指定时区:

    DAG = DAG(
        dag_id='ietl_tv3_redge_devices',
        default_args=ARGS,
        schedule_interval= '30 7 * * *',
        max_active_runs=1,
        timezone='Asia/Shanghai'  # 替换为你的本地时区
    )
    
  • DAG处于暂停状态:登录Airflow UI,检查该DAG的状态是否为“已启用”,若处于暂停状态,调度器不会触发执行。

  • 调度器未正常运行:确认Airflow调度器服务是否在运行,比如通过systemctl status airflow-scheduler(systemd环境)或查看容器日志(Docker部署),调度器停摆会导致所有DAG无法触发。

  • 执行窗口已错过:如果start_date设为days_ago(1)且当前时间已过当天07:30 UTC,Airflow会等到下一个周期才触发。例如你在当天10点UTC部署DAG,首次执行会是次日07:30 UTC。

  • 日志排查:查看Airflow调度器或webserver日志,搜索DAG IDietl_tv3_redge_devices,加载失败、调度异常的报错信息会直接指向问题根源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 16:57:12