Airflow의 depends_on_past 옵션과 "waiting for downstream" 동작은 DAG(Directed Acyclic Graph) 내에서 테스크의 실행 순서를 제어하는 중요한 기능이다.
depends_on_past 옵션이 활성화되면, 특정 task가 이전 실행에서 성공했을 때만 현재 실행이 가능합니다. 즉, 현재 task가 실행되기 위해서는 이전 날짜의 동일한 task가 성공적으로 완료되어야 한다.
주로 배치 작업에서, task가 전날 또는 이전 주기에서 성공적으로 완료되어야만 새로운 데이터를 처리할 수 있도록 보장하고 싶을 때 사용한다.
waiting for downstream 동작은 Airflow에서 상류 task가 하류 task가 완료되기 전까지 재실행되지 않도록 기다리는 것을 의미한다. 이는 DAG 내에서 task 갑의 의존서이 있을 때 사용한다. 이는 DAG 내에서 task 간의 의존성이 있을 때 사용한다.
DAG 구성
from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator
from datetime import datetime, timedelta
default_args = {
'depends_on_past': True, # True 또는 False로 설정하여 동작을 확인
}
with DAG(
'example_dag',
default_args=default_args,
start_date=datetime(2024, 10, 10),
schedule_interval=timedelta(days=1)
) as dag:
task1 = DummyOperator(task_id='task1')
task2 = DummyOperator(task_id='task2')
task1 >> task2
depends_on_past=True로 설정되면, task가 이전 실행에서 성공했는지 여부와 함께 하위 task가 정상적으로 완료되었는지 확인하는 동작이 발생한다. 이때, 하위 task가 실패하거나 미완료 상태이면, 상위 task는 재실행되지 않고 하위 task가 성공할 때까지 기다린다.
DAY 1 (2024-10-10)
DAY 2 (2024-10-11)
depends_on_past=False로 설정되면, 현재 task는 이전 주기의 실행 상태와 상관없이 매번 실행된다. 즉, 이전에 하위 task가 실패했더라도 상위 task는 계속해서 다음 주기마다 실행된다.
DAY 1 (2024-10-10)
DAY 2 (2024-10-11)