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

Airflow DAG关闭Catchup后,execution_date传递前一日日期问题求助

Airflow execution_date传递前一日日期问题排查与解决

核心原因:Airflow的execution_date设计逻辑

Airflow中execution_date(2.x+也叫logical_date)代表的是任务对应调度周期的结束时间,而非任务实际运行时间,这个逻辑不受catchup=false配置影响。比如配置schedule_interval='@daily'且时区为America/Los_Angeles时:

  • 任务会在PST每日0点触发
  • 对应的execution_date为PST前一日0点,这是Airflow默认的调度逻辑,用于标识该任务处理的是前一日的周期数据。

排查与解决步骤

  1. 明确业务需求

    • 若你需要的是调度周期对应的日期(即当前传递的前一日日期),则execution_date的表现是符合预期的,无需调整。
    • 若你需要的是任务运行当天的PST日期,需调整变量传递方式。
  2. 调整变量传递模板
    要获取任务运行当天的PST日期,可使用以下模板变量:

    {{ (execution_date + macros.timedelta(days=1)).in_timezone('America/Los_Angeles').strftime('%Y-%m-%d') }}
    

    或者针对Airflow 2.x+,使用更清晰的logical_date:

    {{ (logical_date + macros.timedelta(days=1)).in_timezone('America/Los_Angeles').strftime('%Y-%m-%d') }}
    
  3. 校验DAG的时区配置
    确保DAG的start_date明确指定PST时区,避免隐式UTC转换导致的日期偏移:

    from datetime import datetime
    import pytz
    
    default_args = {
        'start_date': datetime(2024, 1, 1, tzinfo=pytz.timezone('America/Los_Angeles')),
        # 其他配置
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 08:06:17