Python으로 배우는 Apache Airflow 입문
Mike Metzger
Data Engineer

on_failure_callback - DAG 실행 / 태스크 실패 시on_success_callback - DAG 실행 / 태스크 성공 시on_retry_callbackon_skipped_callbackon_execute_callback
context 딕셔너리를 자동으로 전달context에는 DAG 실행 / 태스크 정보 포함context["dag"].dag_id - DAG 이름context["task_instance"].task_id - 태스크 이름context["logical_date"] - DAG 실행 날짜context를 인수로 받아야 함def alert_on_failure(context):dag_id = context["dag"].dag_id task_id = context["task_instance"].task_id print(f"Task {task_id} in DAG {dag_id} has failed.")
def alert_on_failure(context): dag_id = context["dag"].dag_id task_id = context["task_instance"].task_id print(f"Task {task_id} in Dag {dag_id} has failed.")@dag(on_failure_callback=alert_on_failure) def sales_etl_dag(): @task() def data_import_task(): raise ValueError("Simulated failure")# Task data_import_task in Dag sales_etl_dag has failed.
SmtpNotifier - 이메일 알림 전송SlackNotifier - Slack 채널에 메시지 게시
airflow.providers.smtp.notifications.smtp 라이브러리 사용from_email 및 to 속성 필수subject, html_content 등 포함 가능@dag(dag_id=`sales_etl_dag`,
on_failure_callback=SmtpNotifier(
to='[email protected]',
from_email='[email protected]',
subject='Dag sales_etl_dag has failed'
)
)

Python으로 배우는 Apache Airflow 입문