컨테이너·워크플로우 자동화/Airflow로 워크플로우 자동화하기

Airflow schedule_interval 완벽 정리

Data Jun 2025. 10. 19. 10:21

Airflow에서 DAG이 언제 실행될지를 결정하는 핵심 파라미터가 바로 schedule_interval 입니다.
즉, “이 DAG을 어떤 주기로 실행할 것인가” 를 설정하는 옵션이에요.

 

1. 기본 개념

  • schedule_interval 은 DAG 실행 주기(schedule frequency) 를 정의합니다.
  • 크론 표현식(CRON Expression)이나 예약어(preset string) 을 사용할 수 있습니다.
  • Airflow는 이 설정에 따라 정해진 주기마다 자동으로 DAG을 실행합니다.

 

2. 주요 예약어(preset) 정리

예약어 의미 실행 시점 (cron 표현식)
None 스케줄 없음 — 수동(외부) 실행만 가능  
@once 한 번만 실행  
@hourly 매시간 정각에 실행 0 * * * *
@daily 매일 자정(00:00)에 실행 0 0 * *
@weekly 매주 일요일 00:00에 실행 0 0 * * 0
@monthly 매월 1일 00:00에 실행 0 0 1 * *
@yearly 매년 1월 1일 00:00에 실행 0 0 1 1 *

 

3. 사용 예시

from airflow import DAG
from datetime import datetime

with DAG(
    dag_id='example_dag',
    start_date=datetime(2025, 10, 19),
    schedule_interval='@daily',  # 매일 자정에 실행
    catchup=False
):
    ...
  • @daily → 매일 자정에 실행
  • @weekly → 매주 일요일 00:00에 실행
  • @once → DAG 생성 후 딱 한 번만 실행

 

4. 크론 표현식으로도 가능

Airflow에서는 예약어 대신 직접 크론 문법을 써도 됩니다 👇

표현식 의미
"0 9 * * *" 매일 오전 9시
"0 */2 * * *" 2시간마다
"30 6 * * 1-5" 평일 오전 6시 30분에 실행

 

5. Cron 표현식 구조 이해하기

Airflow는 리눅스의 cron 표현식을 그대로 사용합니다.
각 자리는 다음과 같은 의미를 가집니다 👇

자리 의미
1번째 분 (minute) 0 → 매시 정각
2번째 시 (hour) 0 → 자정
3번째 일 (day of month) 1 → 매월 1일
4번째 월 (month) * → 매일
5번째 요일 (day of week) 0 → 일요

 

1️⃣  예시로 보면

표현식 의미
0 * * * * 매시간 정각
0 0 * * * 매일 자정
0 0 * * 0 매주 일요일 00시
0 0 1 * * 매월 1일 00시
0 0 1 1 * 매년 1월 1일 00시

 

 

정리하면

 

✅ schedule_interval은 DAG의 실행 주기를 정의하는 옵션

✅ 예약어(@daily, @weekly, @monthly 등) 또는 cron 표현식으로 설정 가능
✅ None으로 설정하면 수동 실행 전용 DAG으로 사용 가능