On this page
devops devopsairflowcallbackswork
Airflow DAG 수준 Callback
Airflow 2.x는 DAG 수준의 on_success_callback을 무시해요. task 수준 callback만 동작해요.
• Updated March 22, 2026 • 1 min read
문제
# DAG 수준의 on_success_callback은 Airflow 2.11.0에서 무시돼요
with DAG(
dag_id='my_dag',
on_success_callback=send_alert # 아무 일도 안 함
) as dag:
... 에러도 발생하지 않아요. 모든 task가 성공해도 callback이 실행되지 않을 뿐이에요.
해결 방법
on_success_callback을 파이프라인의 마지막 task에 설정하면 돼요.
# 마지막 task에 task 수준 callback 사용
last_task = SomeOperator(
task_id='final_task',
on_success_callback=send_alert, # 이건 동작해요
) 핵심 포인트
- DAG 수준
on_failure_callback은 동작해요(task 실패 시) - DAG 수준
on_success_callback은 동작하지 않아요(조용히 무시됨) - 성공 알림을 보내려면 DAG의 마지막 task에 callback을 붙이면 돼요
- 이 동작은 Airflow 2.11.0에서 확인됐어요(다른 2.x 버전에서도 동일할 가능성 높음)
예시: amplitude_etl_dag
# default_args로 모든 task의 실패를 처리
default_args = {
'on_failure_callback': send_failure_alert,
}
with DAG('amplitude_etl', default_args=default_args):
validate = PythonOperator(task_id='validate', ...)
etl = DockerOperator(
task_id='amplitude-etl',
on_success_callback=send_success_alert, # 성공 callback은 여기에
)
_ = validate >> etl 왜 중요한가
이걸 모르면 성공 알림이 왜 안 오는지 디버깅하느라 시간을 낭비할 수 있어요. DAG 수준 callback이 조용히 무시된다는 걸 모르는 채로요.