Airflow:我的DAG为何未在预期日期正常运行?
Airflow 调度逻辑解答
核心调度规则
Airflow 采用周期结束触发的调度逻辑:每个 DAG Run 对应的execution_date为调度周期的起始时间,任务实际执行的时间点为该调度周期的结束时间。
比如你配置的 cron 表达式为按天触发的规则,对应周期长度为1天,execution_date为2024-05-20 17:00的 DAG Run,会在2024-05-21 17:00(即该1天周期结束的时间点)才会被调度器触发执行。
场景问题解答
- 你当前配置
schedule_interval="00 17 * * 1-5时,周一17:00对应execution_date的DAG Run,确实会在周二17:00才会触发执行,你的理解是正确的。 - 将
schedule_interval调整为00 17 * * 0-4可以满足你每周一到周五17:00运行的需求:
该配置下execution_date为周日17:00的DAG Run,会在周一17:00触发;execution_date为周一17:00的DAG Run,会在周二17:00触发,以此类推,execution_date为周四17:00的DAG Run会在周五17:00触发,刚好覆盖周一到周五17:00的执行时间要求。
额外注意事项
建议你当前配置的start_date=days_ago(2)属于动态起始时间,建议替换为固定的静态日期(比如datetime(2024, 1, 1),可根据你实际需要的起始运行时间调整),避免动态start_date随当前时间动态变化,导致DAG Run计算异常漏跑。
内容的提问来源于stack exchange,提问作者Jie Liu
相关产品推荐
相关产品推荐

