전체 그래프
Airflow

Trigger Rules

data-engineeringtool/airflowtrigger

상위: Airflow

요약

Trigger Rule은 Task 실행 조건을 결정합니다. 기본값은 all_success(모든 upstream Task 성공 시)이며, one_failed, all_done, none_failed 등 다양한 조건을 설정할 수 있습니다. 특히 Branching 후 합류 시 적절한 Trigger Rule 설정이 필수입니다.

Trigger Rule이란?

  • Task 실행 조건을 결정하는 기능
  • 기본값: all_success (모든 upstream Task가 성공해야 실행)
  • Upstream Task의 상태에 따라 실행 여부 결정

Trigger Rule 종류

Trigger Rule설명사용 시기
all_success (기본)모든 upstream Task가 성공 시 실행일반적인 경우
all_failed모든 upstream Task 실패 시 실행전체 실패 처리
all_done성공/실패/스킵 상관없이 모두 완료 시 실행정리 작업
one_failed최소 1개 Task 실패 시 실행실패 알림
one_success최소 1개 Task 성공 시 실행부분 성공 처리
none_failed실패한 Task 없이 모두 성공 또는 스킵 시 실행일반적 성공
none_failed_or_skipped실패와 스킵 없이 모두 성공 시 실행엄격한 성공 조건
none_skipped스킵된 Task 없이 모두 완료 시 실행모든 Task 필수 실행
dummy항상 실행테스트용

예시 코드

task_3 = BashOperator(
    task_id="task_3",
    bash_command="echo '3 실행'",
    trigger_rule="all_success"  # 기본값
)

task_4 = BashOperator(
    task_id="task_4",
    bash_command="echo '4 실행'",
    trigger_rule="one_failed"  # 하나라도 실패  실행
)

task_5 = BashOperator(
    task_id="task_5",
    bash_command="echo '5 실행'",
    trigger_rule="all_done"  # 모두 완료  실행
)

Trigger Rules

실전 사용 패턴

정리 작업 (Cleanup)

[task_1, task_2, task_3] >> cleanup

cleanup = BashOperator(
    task_id='cleanup',
    bash_command='rm -f /tmp/*',
    trigger_rule='all_done'  # 성공/실패 관계없이 정리
)

실패 알림

[task_1, task_2] >> send_failure_alert

send_failure_alert = EmailOperator(
    task_id='failure_alert',
    to='[email protected]',
    subject='Task Failed',
    trigger_rule='one_failed'
)

Branching 후 합류

branch >> [task_A, task_B] >> join

join = EmptyOperator(
    task_id='join',
    trigger_rule='none_failed_or_skipped'  # 분기  합류  필수
)

자세한 내용은 Branching 참조

주의사항

Branching 후 합류

  • 분기된 Task 중 일부가 skipped 처리됨
  • 기본값 all_success는 skipped를 실패로 간주
  • 반드시 none_failed_or_skipped 사용

all_done vs none_failed

  • all_done: 실패해도 실행 (정리 작업용)
  • none_failed: 실패 시 실행 안함 (일반 작업용)

다음 단계

참고 자료