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으로 사용 가능
'컨테이너·워크플로우 자동화 > Airflow로 워크플로우 자동화하기' 카테고리의 다른 글
| Airflow Dataset 완전 정리 (1) | 2025.10.19 |
|---|---|
| Airflow의 Backfill & Catchup 이해하기 (0) | 2025.10.19 |
| Airflow DAG Scheduling 이해 (0) | 2025.10.19 |
| Airflow로 Star Wars API 데이터를 PostgreSQL에 적재하기 (0) | 2025.10.19 |
| Airflow ExternalTaskMarker 이해하기 (0) | 2025.10.19 |