请求协助配置Airflow任务每小时第15分钟执行
解决Airflow任务每小时第15分钟执行的配置问题
你用的15 * * * *这个cron表达式本身是对的,没成功大概率是时区或任务起始时间的配置问题,以下是具体排查和修复方案:
1. 检查Airflow时区设置
Airflow默认用UTC时区,要是你的业务时区不是UTC,执行时间会和预期偏差。比如你在东八区(UTC+8),UTC时间的15分对应你当地的23分,自然不符合要求。
- 修改
airflow.cfg里的时区配置:default_timezone = Asia/Shanghai # 换成你的业务时区 - 重启Airflow的webserver和scheduler服务让配置生效。
2. 正确设置任务的start_date
Airflow是基于start_date和schedule_interval计算下一次执行时间的,要是start_date不是整点或者带了非0的分钟数,会导致调度乱掉。
- 建议把
start_date设为过去的整点时间,示例代码:from datetime import datetime from airflow import DAG from airflow.operators.empty import EmptyOperator with DAG( dag_id='hourly_15min_task', start_date=datetime(2024, 1, 1, 0, 0), # 整点起始 schedule_interval='15 * * * *', catchup=False, # 关闭补跑,避免一次性执行一堆历史任务 timezone='Asia/Shanghai' # 也可以单独给这个DAG指定时区 ) as dag: task = EmptyOperator(task_id='sample_task')
3. 验证调度逻辑
Airflow调度器会根据上一次任务执行时间(或start_date)加上调度间隔算下一次时间,要是之前任务失败或延迟,会影响后续调度:
- 打开Airflow UI,看DAG的"Graph View"或"Tree View",检查任务执行时间是否符合预期。
- 如果有历史任务干扰,手动清除任务实例,让调度器重新计算时间。
4. Airflow 2.x+版本的小提醒
Airflow 2.2及以上版本,更推荐用schedule参数替代schedule_interval(功能完全一致,是官方主推的新写法):
schedule='15 * * * *'
内容的提问来源于stack exchange,提问作者Ramakrishna Vegiraju
相关产品推荐
相关产品推荐

