schedule_interval 개념과 사용법
schedule_interval은 Airflow의 DAG 실행 주기를 설정하는 파라미터이다. 이 설정을 통해 DAG 실행을 자동화하여 특정 시각에 정해진 작업을 수행한다. 이 글에서는 schedule_interval의 개념과 사용법을 소개한다. 만약 Scheduling을 진행할 때 Airflow의 시간 개념 (Interval Start, Interval End, Logical Date)에 대해 알지 못한다면, 아래의 글을 참고하면 된다.
schedule_interval 사용법
Airflow에서 schedule_interval을 적용하기 위한 방법으로 Cron 표현식, datetime.timedelta, 예약어를 활용하는 방법이 있다. 세 가지 방법의 간단한 사용 예시를 먼저 살펴본 뒤 각 방법에 대해 알아볼 것이다. 추가로 정교한 스케줄링이 필요하다면 사용자 지정 타임테이블을 활용하는 방법이 있지만, 여기서는 다루지 않을 것이다.
- 타임 테이블에 대한 내용은 공식 문서 참고
schedule_interval 사용 예시
- Cron : Crontab을 사용해 매 20분마다 한 번씩 DAG가 실행되도록 설정
dag = DAG(
dag_id = "dag_id",
schedule_interval = "*/20 * * * *",
...
)
- timedelta : datetime의 timedelta를 사용해 하루에 한 번씩 DAG가 실행되도록 설정
dag = DAG(
dag_id = "dag_id",
schedule_interval = datetime.timedelta(days=1),
...
)
- 예약어 : Airflow에 미리 설정돼 있는 예약어를 활용해 매달 한 번씩 DAG가 실행되도록 설정
dag = DAG(
dag_id = "dag_id",
schedule_interval = "@monthly",
...
)
Cron 표현식
- Cron은 총 5개의 영역으로 구분하여 DAG 실행 주기 설정
- Cron 표현식을 사용한 예시
Cron 표현식 | 설명 |
* * * * * | 매 분마다 실행 |
45 23 * * SAT | 매주 토요일 23시 45분에 실행 |
30 1-12 * * * | 매일 1시 30분 ~ 12시 30분까지 한 시간 간격으로 실행 |
0 0 * * MON-FRI | 매주 월 ~ 금 자정에 실행 |
0 0,12 * * * | 매일 자정(24:00) 및 정오(12:00)에 실행 |
0 0 10 * * | 매월 10일 자정(24:00)에 실행 |
*/20 * * * * | 매 20분마다 실행 |
timedelta 활용
- datetime 패키지의 timedelta를 활용해 DAG 실행 주기 설정
- timedelta를 사용한 예시
timedelta | 설명 |
timedelta(minutes=10) | 매 10분마다 실행 (*/10 * * * *) |
timedelta(hours=2) | 매 2시간마다 실행 (* */2 * * *) |
timedelta(days=1) | 매일 자정(24:00)에 실행 (0 0 1 * *) |
예약어
- Airflow에 미리 설정돼 있는 schedule_interval 예약어를 활용해 DAG 실행 주기 설정
- Airflow에서 적용 가능한 예약어
예약어 | 설명 | Cron 표현식 |
None | 스케줄링 X, External Trigger만 가능 | |
@once | 1회만 실행 | |
@continuous | 이전 실행이 끝나자마자 실행 | |
@hourly | 매 시간 한 번씩 정각에 실행 | 0 * * * * |
@daily | 매일 자정(24:00)에 한 번씩 실행 | 0 0 * * * |
@weekly | 매주 일요일 자정(24:00)에 한 번씩 실행 | 0 0 * * 0 |
@monthly | 매월 1일 자정(24:00)에 한 번씩 실행 | 0 0 1 * * |
@quarterly | 분기 첫 날 자정(24:00)에 한 번씩 실행 | 0 0 1 */3 * |
@yearly | 매년 1월 1일 자정(24:00)에 한 번씩 실행 | 0 0 1 1 * |
Reference
https://airflow.apache.org/docs/apache-airflow/stable/authoring-and-scheduling/cron.html
https://airflow.apache.org/docs/apache-airflow/1.10.1/scheduler.html
'Data Engineering > Airflow' 카테고리의 다른 글
[Airflow] @task, Task Decorator의 개념과 사용 예시, 주의할 점 (2) | 2024.11.20 |
---|---|
[Airflow] EC2 (Start/Stop) InstanceOperator 사용 예시 (0) | 2024.11.09 |
[Airflow] S3ToRedshiftOperator 사용 예시 (0) | 2024.11.07 |
[Airflow] DAG Trigger 시 DAG Run이 동시에 두 개가 생성되는 문제 (0) | 2024.11.05 |
[Airflow] data_interval_start를 활용한 File System Partitioning 적용 (0) | 2024.10.31 |