728x90
반응형
Airflow Trigger Rules
https://airflow.apache.org/docs/apache-airflow/1.10.9/concepts.html#trigger-rules
상위 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
반응형
'[Tool] > [Airflow]' 카테고리의 다른 글
[Airflow] Airflow 개념 (0) | 2024.03.07 |
---|