本包目录(311 条)

调度时区处理

调度时区决定 cron 表达式的解释基准:调度器按 UTC 运行而表达式按本地时间编写时,任务会整体偏移;跨时区团队要显式声明 DAG 时区。

三层时区调度系统时区、DAG/任务时区、数据存储时区
Airflow要求 timezone-aware 的 start_date,建议显式指定
核对DAG 详情页显示的 Next Run 时间

Airflow 指定本地时区

Airflow 指定本地时区
import pendulum
from airflow import DAG

local_tz = pendulum.timezone('Asia/Shanghai')
dag = DAG(
    'daily_orders',
    start_date=pendulum.datetime(2026, 1, 1, tz=local_tz),
    schedule='0 2 * * *',   # 按 Asia/Shanghai 解释
    catchup=False,
)
服务器与数据库用 UTC、报表按北京时间解读时,查数要统一转换口径,避免“同一天数据少 8 小时”。

易错点

  • naive datetime 作为 start_date 会按默认时区解释,跨环境结果不一致
  • 夏令时切换地区会出现任务跳过或重复,跨国调度要专门验证

数据来源与参考

  • Apache Airflow 官方文档:Time Zones 处理说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌