Как отправить и отправить по электронной почте, если задача не выполняется к определенному времени суток в Airflow

#email #airflow

#Адрес электронной почты #воздушный поток

Вопрос:

Я настраиваю DAG, который инициируется с помощью датчика. Датчик проверяет, были ли загружены некоторые файлы этим утром. Если файлы не загрузились к 12 вечера того же дня, я хочу вместо этого запланировать электронное письмо. Каков наилучший способ подойти к этому и можете ли вы создать логику ifelse, зависящую от времени?

введите описание изображения здесь

Ответ №1:

Вам необходимо реализовать SLA: https://airflow.apache.org/docs/apache-airflow/stable/concepts.html#slas

Соглашения об уровне обслуживания или время, к которому задача или DAG должны быть выполнены успешно, могут быть установлены на уровне задачи как timedelta. Если к этому времени один или несколько экземпляров не завершились успешно, отправляется электронное письмо с предупреждением, в котором подробно описывается список задач, которые пропустили их SLA. Событие также записывается в базу данных и становится доступным в веб-интерфейсе в разделе Обзор-> Промахи SLA, где события могут быть проанализированы и задокументированы.

SLA можно настроить для запланированных задач с помощью параметра sla. В дополнение к отправке оповещений на адреса, указанные в параметре email задачи, sla_miss_callback указывает дополнительный вызываемый объект, который будет вызываться, когда SLA не выполняется.

Полное руководство по SLA Airflow: https://blog.clairvoyantsoft.com/airflow-service-level-agreement-sla-2f3c91cd84cc