Apache Airflow如何配置DAG实现指定时段轮询运行及cron语法验证
问题解答
第二种cron语法的生效情况
你给出的第二种cron语法0 0/5 1,2,3 * * ?无法在Airflow中正常生效,原因有两点:
- Airflow使用标准5位cron表达式(格式为
分 时 日 月 周),不支持6位及以上的Quartz风格cron语法,你写的表达式多了一位,还使用了Quartz特有的?通配符,Airflow会直接解析报错,导致DAG无法正常加载。 - 就算忽略语法兼容问题,表达式里的
0/5代表每5分钟执行一次,和你要的每30分钟轮询的需求也不匹配。
你提供的第一种cron语法的问题
第一种写法0 1-3 ***(正确排版后为0 1-3 * * *)的效果是每天1点、2点、3点整各执行一次,总共每天执行3次,无法达到每30分钟运行一次的要求。
正确实现方案
不需要编写任何额外代码,直接把schedule_interval设置为正确的5位cron表达式即可:
- 如果需要覆盖1:00到3:00所有整半点时刻(包含3:00),用:
*/30 1-3 * * *,执行时间分别为1:00、1:30、2:00、2:30、3:00 - 如果不需要执行3:00那一次,仅覆盖1:00到2:30的时刻,用:
*/30 1-2 * * *
内容的提问来源于stack exchange,提问作者The Doctor
相关产品推荐
相关产品推荐

