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

Airflow schedule_interval失效求助:新西兰时区调度未按时触发

解决Airflow时区与调度触发不匹配的问题

我来帮你理清楚这个问题——Airflow的时区配置独立于系统本地时区,你只修改了AWS实例的时区,但Airflow默认还是用UTC来处理调度和部分UI显示,这就是DAG没按时触发的核心原因。下面是一步步的解决方案:

1. 修改Airflow核心配置文件

首先找到你的airflow.cfg配置文件(默认路径是~/airflow/airflow.cfg,如果是Docker部署则在你挂载的配置目录里),修改以下两个关键参数:

# 控制调度器使用的时区,决定Cron表达式的解析基准
default_timezone = Pacific/Auckland
# 控制WebUI显示的时区,解决右上角时间显示UTC的问题
default_ui_timezone = Pacific/Auckland

⚠️ 注意:必须使用IANA标准时区名称(比如Pacific/Auckland),不要用NZ或NZST这类缩写,避免歧义。

2. 重启Airflow服务

配置修改后,必须重启相关服务才能生效:

  • 如果是用systemd管理的Airflow:
    sudo systemctl restart airflow-scheduler
    sudo systemctl restart airflow-webserver
    
  • 如果是Docker Compose部署:
    docker-compose restart airflow-scheduler airflow-webserver
    
  • 如果你用的是CeleryExecutor,别忘了同时重启Celery Worker:
    sudo systemctl restart airflow-worker
    # 或者Docker环境下
    docker-compose restart airflow-worker
    

3. 验证DAG的调度配置

确保你的DAG调度表达式是基于新西兰时区编写的。你需要每天下午3点和凌晨4点运行,对应的Cron表达式应该是:

schedule_interval = "0 15,4 * * *"

当default_timezone设为Pacific/Auckland后,这个Cron会直接按新西兰时区解析,不需要手动转换为UTC时间。

4. 验证配置是否生效

完成以上步骤后,做几个检查:

  • 打开Airflow WebUI,右上角应该显示Pacific/Auckland时区的时间,不再是UTC。
  • 查看DAG的「Next Run」时间,应该符合你设置的下午3点和凌晨4点的周期。
  • 用Airflow CLI验证时区:
    airflow info
    
    在输出中找到Timezone相关字段,确认显示的是Pacific/Auckland。

额外注意事项

  • 已存在的DAG任务实例历史不会自动更新时区,你可以通过清除DAG的任务实例(在WebUI的DAG详情页→「Clear」),让调度器重新计算下一次运行时间。
  • 如果你的Airflow版本低于2.0,default_ui_timezone参数不存在,此时UI会默认使用default_timezone的配置,但建议尽量升级到较新版本以获得更好的时区支持。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 06:42:46