Я пытаюсь внедрить систему предупреждений / уведомлений Airflow, когда DAG или задача не работают, успешно или задерживаются. Мне удалось реализовать уведомления FAILURE и SUCCESS, а также удалось частично реализовать систему уведомления о задержках с использованием SLA, но SLA имеет ограничение, заключающееся в том, что оно работает только с запланированными DAG, многие из DAG в нашей системе основаны на триггерах. Есть ли способ реализовать систему уведомления о задержках без SLA в Airflow? Заранее спасибо !
Система уведомления о задержке в воздушном потоке
Ответы (1)
Соглашение об уровне обслуживания (SLA) обеспечивает возможность отправки электронных писем в случае, если задача превышает ожидаемые временные рамки с начала выполнения DAG и в соответствии с официальная документация и это средняя статья, Airflow в настоящее время не поддерживает эту функцию в запущенных DAG; в этом случае я рекомендую вам открыть проблему улучшения в Airflow Issue Tracker, чтобы запросить поддержку этой функции.
С другой стороны, вы можете использовать следующий подход для проверки SLA после завершения работы DAG через on_success_callback
:
def success_function (context):
s_date = context.get('task_instance').start_date.replace(tzinfo = None)
e_date = datetime.now().replace(tzinfo = None)
execution_time = e_date - s_date
sla = timedelta (seconds = 30)
if execution_time> sla:
print('send_email')
else:
print('no send email')
t1 = BashOperator (
task_id = 'print_date',
bash_command = 'date',
dag = dag,
on_success_callback = success_function
)
Помните о следующих соображениях, если вы реализуете этот обходной путь:
- Контекст не содержит информацию об SLA, настроенном в задаче; поэтому необходимо указать его в функции для каждой задачи, в которой вы хотите проверить SLA.
- Пропущенные SLA не будут отображаться в пользовательском интерфейсе Airflow.
- Необходимо создать логику для отправки писем
person
Orlandog
schedule
30.10.2020
Привет, Орландог, это потрясающе сработало отлично. Пожалуйста, примите мой вопрос, если он полезен. Большое спасибо
- person sethu; 06.01.2021