我一直在尝试获得一个 slack 消息回调来触发 SLA 未命中。我注意到:
sla_misses 在 Airflow Web UI 中的 slamiss/list/ 中成功注册
on_failure_callback工作成功
但是,sla_miss_callback函数本身永远不会被触发。
我试过的:
在 default_args 级别、dag 级别和任务级别添加 'sla' 和 'sla_miss_callback' 的不同组合
检查我们的调度程序和工作人员的日志以获取 SLA 相关消息
https://github.com/apache/airflow/blob/master/airflow/jobs/scheduler_job.py#L416,但我们什么也没看到
default_args = {
"owner": "airflow",
"depends_on_past": False,
'start_date': airflow.utils.dates.days_ago(n=0,minute=1),
'on_failure_callback': send_task_failed_msg_to_slack,
'sla': timedelta(minutes=1),
"retries": 0,
"pool": 'canary',
'priority_weight': 1
}
dag = airflow.DAG(
dag_id='sla_test',
default_args=default_args,
sla_miss_callback=send_sla_miss_message_to_slack,
schedule_interval='*/5 * * * *',
catchup=False,
max_active_runs=1,
dagrun_timeout=timedelta(minutes=5)
)
def sleep():
""" Sleep for 2 minutes """
time.sleep(90) …Run Code Online (Sandbox Code Playgroud)