DAG 스케줄링

Python으로 배우는 Apache Airflow 입문

Mike Metzger

Data Engineer

DAG 실행

  • 특정 시점의 워크플로우 인스턴스
  • 수동 또는 schedule로 실행 가능
  • 워크플로우 및 태스크의 상태 유지
    • running
    • failed
    • success
1 https://airflow.apache.org/docs/stable/scheduler.html
Python으로 배우는 Apache Airflow 입문

DAG 실행 뷰

전체 DAG의 최근 실행 목록을 보여주는 Airflow DAG 실행 페이지

Python으로 배우는 Apache Airflow 입문

DAG 실행 상태

각 실행의 상태 열을 보여주는 Airflow DAG 실행 페이지

Python으로 배우는 Apache Airflow 입문

스케줄 세부 정보

DAG 스케줄링 시 주요 속성:

  • start_date - DAG 실행을 처음 예약할 날짜/시간
  • end_date - 새 DAG 인스턴스 실행을 중단할 날짜 (선택 사항)
    • start_dateend_date는 모두 datetime(year, month, day) 객체 사용:
       from pendulum import datetime
       start_date=datetime(2026, 4, 10, tz="UTC")
      
Python으로 배우는 Apache Airflow 입문

스케줄

schedule의 역할:

  • DAG 실행 빈도 정의
  • start_dateend_date 사이에 적용
  • cron 구문, 내장 프리셋, timedelta로 설정 가능
Python으로 배우는 Apache Airflow 입문

cron 구문

cron 구문의 5개 시간 필드를 보여주는 다이어그램

  • Unix cron 형식 기반
  • 공백으로 구분된 5개 필드
  • *는 모든 간격마다 실행 (예: 매 분, 매일)
  • 필드에 쉼표로 구분된 값 목록 사용 가능
Python으로 배우는 Apache Airflow 입문

cron 예시

cron 구문의 5개 시간 필드를 보여주는 다이어그램

0 12 * * *              # Run daily at noon
* * 25 2 *              # Run once per minute on February 25
0,15,30,45 * * * *      # Run every 15 minutes
Python으로 배우는 Apache Airflow 입문

Airflow 스케줄러 프리셋

프리셋:

  • @hourly
  • @daily
  • @weekly
  • @monthly
  • @yearly

cron 동등 표현:

  • 0 * * * *
  • 0 0 * * *
  • 0 0 * * 0
  • 0 0 1 * *
  • 0 0 1 1 *
1 https://airflow.apache.org/docs/stable/scheduler.html
Python으로 배우는 Apache Airflow 입문

특수 프리셋

Airflow의 특수 schedule 프리셋:

  • None - 스케줄 없음, 수동 트리거 전용
  • @once - 한 번만 실행
  • @continuous - 이전 실행 완료 즉시 재실행
Python으로 배우는 Apache Airflow 입문

timedelta

  • pendulum.duration 사용 가능
  • duration(hours=6)
  • duration(minutes=30)
from pendulum import duration

@dag(
  dag_id="example_dag"
  schedule=duration(days=2)
)
Python으로 배우는 Apache Airflow 입문

스케줄 적용

  • DAG에 스케줄 정의
  • schedule 매개변수 사용:
@dag(
  dag_id="example_dag",
  schedule="0 12 * * *"
)
@dag(
  dag_id="example_dag",
  schedule="@daily"     
)
Python으로 배우는 Apache Airflow 입문

스케줄 주의사항

DAG 스케줄링 시 Airflow 동작:

  • 시작 날짜 이후 한 전체 간격이 지나야 함
  • start_date + schedule 시점에 실행 예약
'start_date': datetime(2026, 2, 25, tz="UTC")
'schedule': @daily

DAG 최초 실행 가능 시각: 2026년 2월 26일

Python으로 배우는 Apache Airflow 입문

연습해 봅시다!

Python으로 배우는 Apache Airflow 입문

Preparing Video For Download...