본문 바로가기

[Tool]/[Airflow]

[Airflow] Airflow Trigger Rules

728x90
반응형

Airflow Trigger Rules

https://airflow.apache.org/docs/apache-airflow/1.10.9/concepts.html#trigger-rules

 

Concepts — Airflow Documentation

 

airflow.apache.org

상위 task 여러 개가 하나의 하위 task로 연결되는 구조에서 하위 task의 실행 조건을 설정하는 방법이다.

 

trigger_rule 종류

all_success(기본값) 상위 Task가 모두 성공하면 실행
all_failed 상위 Task가 모두 실패하면 실행
all_done 상위 Task가 모두 수행되면 실행(실패해도 수행된 것에 포함)
all_skipped 상위 Task가 모두 Skipped 상태면 실행
one_failed 상위 Task 중 하나 이상 실패하면 실행(모든 상위 Task 완료를 기다리지 않음)
one_success 상위 Task 중 하나 이상 성공하면 실행(모든 상위 Task 완료를 기다리지 않음)
one_done 상위 Task 중 하나 이상 성공 또는 실패 하면 실행
none_failed 상위 Task 중 실패가 없는 경우 실행(성공 또는 Skipped 상태)
none_failed_min_one_success 상위 Task 중 실패가 없고 성공한 Task가 적어도 1개 이상이면 실행
none_skipped Skip된 상위 Task가 없으면 실행(상위 Task가 성공, 실패여도 무방)
always 언제나 실행

 

trigger_rule 예시

#dags/branch_with_trigger.py
import datetime as dt

from airflow.models import DAG
from airflow.operators.dummy_operator import DummyOperator
from airflow.operators.python_operator import BranchPythonOperator

dag = DAG(
    dag_id='branch_without_trigger',
    schedule_interval='@once',
    start_date=dt.datetime(2019, 2, 28)
)

run_this_first = DummyOperator(task_id='run_this_first', dag=dag)
branching = BranchPythonOperator(
    task_id='branching', dag=dag,
    python_callable=lambda: 'branch_a'
)

branch_a = DummyOperator(task_id='branch_a', dag=dag)
follow_branch_a = DummyOperator(task_id='follow_branch_a', dag=dag)

branch_false = DummyOperator(task_id='branch_false', dag=dag)

# join = DummyOperator(task_id='join', dag=dag)  #dags/branch_without_trigger.py
join = DummyOperator(task_id='join', dag=dag, trigger_rule='none_failed')


run_this_first >> branching
branching >> branch_a >> follow_branch_a >> join
branching >> branch_false >> join

trigger_rule 예시 사진

 

반응형

'[Tool] > [Airflow]' 카테고리의 다른 글

[Airflow] Airflow 개념  (0) 2024.03.07