请解释 Airflow 中的 SLA 概念,并说明如何在 DAG 中实现 SLA?
考察说明
考查对 Airflow SLA 机制的理解及实现方法。
回答思路
- 【回答框架 1】SLA 在 Airflow 中指任务或 DAG 的预期完成时间(如任务开始后 N 分钟内必须成功)。其核心是监控与告警,而非强制超时中止任务。
- 【回答框架 2】在 DAG 中可通过 default_args 设置 sla(时间差),如 timedelta(minutes=30),作用于所有任务或单独在任务中指定。
- 【回答框架 3】启用 SLA 后,Airflow 调度器会在每个调度周期检查任务是否在 SLA 内完成,若超时则触发邮件告警(需配置 smtp 和 sla_miss_callback)。
- 【回答框架 4】检查机制通过 SlaMiss 记录未达成的任务,可在 UI 或日志中查看;也可自定义 callback 函数。
- 【回答框架 5】实现时注意时区一致性,确保 start_date 和调度周期正确,避免 SLA 误报。
- 【关键点 1】SLA 是预期完成时间,非硬性超时终止机制。
- 【关键点 2】通过 default_args 或任务级别的 sla 参数设置,值为 timedelta。
- 【关键点 3】需要配置 smtp 或 sla_miss_callback 来处理告警。
- 【关键点 4】SLA 检查基于 start_date 与 schedule_interval,时区需一致。
- 【易错点 1】误认为 SLA 会导致任务自动杀掉,实际仅告警。
- 【易错点 2】未配置 smtp 或 callback 导致告警不生效。
- 【易错点 3】忽略时区差异导致 SLA 判断错误。