Airflow是否存在支持多个cron表达式组合的Timetable实现?
多Cron表达式适配的Timetable现成实现情况
- Airflow 2.4.0及以上的官方版本,已经内置了可直接接收cron表达式列表的Timetable实现,类名为
CronTriggerTimetable,无需安装任何第三方依赖即可使用。 - 基础使用示例代码如下:
from airflow import DAG from airflow.timetables.trigger import CronTriggerTimetable from datetime import datetime with DAG( dag_id="multi_cron_schedule_dag", start_date=datetime(2024, 1, 1), # 直接传入cron表达式列表即可,同时指定统一时区 timetable=CronTriggerTimetable( ["0 9 * * 1-5", "0 10 * * 6,7"], timezone="Asia/Shanghai" ), catchup=False ): # 编写DAG任务逻辑 pass
- 如果你使用的是2.2.x、2.3.x版本的Airflow,官方没有内置对应能力,也没有通用稳定的第三方现成Timetable实现可以直接复用。这种场景建议优先升级Airflow到2.4及以上版本使用官方原生能力,如果暂时无法升级,可以自行实现自定义Timetable,核心逻辑为逐个解析传入的cron表达式,计算各表达式对应的调度时间点,合并去重后按时间排序,取最近的时间点作为下一次调度时间即可。
- 使用注意事项:传入的所有cron表达式必须和Timetable指定的时区保持一致,否则会出现调度时间计算偏移的问题。
内容的提问来源于stack exchange,提问作者igr
相关产品推荐
相关产品推荐

