상위: 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" # 모두 완료 시 실행
)

실전 사용 패턴
정리 작업 (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: 실패 시 실행 안함 (일반 작업용)
다음 단계
- Task Dependencies - Task 의존성 설정
- Branching - 조건부 분기
- Task - Task 기본 개념