要解决Airflow的sla_miss_callback函数未触发的问题,可以按照以下步骤进行:
default_args = {
'sla': timedelta(hours=1),
...
}
# Set sla_miss_callback to be notified when an SLA Miss happens. Leave it to None to disable notifications
# sla_miss_callback = airflow.utils.email.send_email
from airflow.utils.email import send_email
def sla_miss_callback(dag, task_list, blocking_task_list, slas, blocking_tis):
# 自定义通知逻辑
subject = "SLA Missed for DAG: {}".format(dag.dag_id)
body = "SLA Missed for tasks: {}".format(task_list)
send_email('your_email@example.com', subject, body)
sla_miss_callback = your_dag_file.sla_miss_callback
请确保将"your_dag_file"替换为包含自定义sla_miss_callback函数的DAG定义文件的名称(不包括".py"后缀)。
airflow scheduler -D
现在,当DAG中的任务未满足SLA时,您的自定义sla_miss_callback函数将被触发,并且您将收到通知邮件。