How to make your tasks dependent(depends_on_past, wait_for_downstream)

우상욱·2024년 3월 11일
0

Airflow

목록 보기
18/22

depends_on_past


  • task 레벨에서 정의
  • 만약 이전 task가 실패한 경우, 현재 task는 실행 X

스케줄이 있는 DAG RUN의 상태의 개념으로 이해해야합니다. 어떤 데이터를 처리함에 있어서, 그 전 날의 processing이 에러를 발생시켰다면, 그 다음 날의 processing을 막고 싶은 job에 대해서 이 옵션을 적용합니다.

  • 예를 들어서 2022년 1월 2일에 실행된 DAG RUN이 task 3개를 보유하고 있습니다.
  • 1월 2일에 task1, task2, task3 중 task2가 실패했습니다.
  • 만약 task2에 depends_on_pastTrue라면, 1월 3일에 동작하는 task2는 실행조차되지 않습니다. 즉 status가 없습니다.
# Task 2
    python_task_2 = PythonOperator(
        task_id="python_task_2", python_callable=second_task, depends_on_past=True
    )

다시 말해서 depends_on_past는 과거의 DAG RUN에 다음 DAG RUN의 같은 task의 상태를 조정할 수 있게 해줍니다. 이는 과거 DAG RUN의 task를 UI 상에서 success 표시 해주면, 다음 프로세싱을 진행할 수 있게 해줍니다.

wait_for_downstream


  • task 레벨에서 정의
  • 이 매개변수를 활용하면, 특정 task X에 대해 이전 DAG RUN의 바로 다운 스트림에서 작업이 성공적으로 완료될 때까지 기다렸다가 실행할 수 있습니다.

스케줄이 있는 DAG RUN의 상태의 개념으로 이해해야합니다.

  • 예를 들어서 2022년 1월 2일에 실행된 DAG RUN이 task 3개를 보유하고 있습니다.
  • 1월 2일에 task1, task2, task3 중 task2가 실패했습니다.
  • 만약 task2에 wait_for_downstreamTrue라면, 1월 3일에 동작하는 task1은 1월 2일에 동작하는 task2가 성공했을 때, 동작하기 때문에 동작 자체가 되질 않습니다. 즉 상태가 없습니다.
# Task 1
    bash_task_1 = BashOperator(
        task_id="bash_task_1",
        bash_command="echo 'first task'",
        wait_for_downstream=True,
    )

다시 말해서 depends_on_past는 과거의 DAG RUN에 다운스트림 task의 상태에 따라서, 다음 DAG RUN의 upstream task를 조정할 수 있게 해줍니다. 이는 과거 DAG RUN의 task를 UI 상에서 success 표시 해주거나, clear를 해서 성공시키면 다시 실행할 수 있습니다.

profile
데이터엔지니어

0개의 댓글