반응형
Airflow에서 start_date
를 2023년과 2024년으로 설정한 경우, 2024년 10월 1일에 한 번 실행되는 DAG의 실행 가능 여부를 이해하려면 Airflow의 start_date
, execution_date
, 그리고 schedule_interval
의 동작을 알아야 합니다.
현재는 2024년 8월 1일로 가정합니다.
1. Airflow의 핵심 동작 원리
start_date
:- DAG의 스케줄 계산이 시작되는 기준 날짜.
- Airflow는
start_date
이후부터schedule_interval
을 기준으로 실행 일정을 계산합니다.
execution_date
:- Airflow는 과거의 데이터를 처리하기 위해 예약된 실행 날짜(
execution_date
) 기준으로 실행합니다. - DAG가 실제 실행되는 시간은
execution_date
이후입니다.
- Airflow는 과거의 데이터를 처리하기 위해 예약된 실행 날짜(
schedule_interval
:- DAG가 언제 실행될지 결정합니다.
- 예:
schedule_interval='0 0 1 10 *'
는 매년 10월 1일 00:00에 실행되도록 예약합니다.
2. 조건: 2024년 10월 1일에만 실행되도록 설정
예제 DAG
from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator
from datetime import datetime
default_args = {
'owner': 'airflow',
'catchup': True, # 과거 스케줄도 실행하도록 설정
}
with DAG(
'single_execution_example',
default_args=default_args,
start_date=datetime(2023, 1, 1), # 또는 datetime(2024, 1, 1)
schedule_interval="0 0 1 10 *", # 매년 10월 1일 실행
description="DAG to run on October 1, 2024",
) as dag:
task = DummyOperator(task_id='run_once')
3. start_date
가 2023년 1월 1일인 경우
start_date=datetime(2023, 1, 1)
schedule_interval="0 0 1 10 *"
실행 계산
- Airflow는
start_date
인 2023년 1월 1일 이후부터schedule_interval
에 따라 실행을 예약합니다. - 2024년의 스케줄:
- 10월 1일 00:00 (실제 실행: 2024년 10월 1일).
결과
- DAG는 2023년 10월 1일에 실행 되지 않습니다. DAG는 2024년 10월 1일에 각각 실행됩니다.
4. start_date
가 2024년 1월 1일인 경우
start_date=datetime(2024, 1, 1)
schedule_interval="0 0 1 10 *"
실행 계산
- Airflow는
start_date
인 2024년 1월 1일 이후부터schedule_interval
에 따라 실행을 예약합니다. - 2025년의 스케줄:
- 10월 1일 00:00 (실제 실행: 2025년 10월 1일).
결과
- DAG는 2025년 10월 1일에만 실행됩니다.
- 2024년의 스케줄은 1년 전 데이터부터 처리하는 동작 방식에 의해서 실행되지 않습니다.
- DAG는 2025년 10월 1일에 각각 실행됩니다.
5. 요약 비교
조건 | 2023년 1월 1일 start_date | 2024년 1월 1일 start_date |
2023년 10월 1일 실행 | 실행되지 않음 | 실행되지 않음 |
2024년 10월 1일 실행 | 실행됨 | 실행되지 않음 |
2025년 10월 1일 실행 | 실행됨 | 실행됨 |
6. 설명
- Airflow는
start_date
이후부터만 DAG의 스케줄을 계산합니다. start_date
가 2023년이면, 2023년의 10월 1일 스케줄도 포함 되지 않습니다. 2023년 10월 1일 스케쥴을 포함하려면 2022년 10월 1일 이전으로 start_date를 설정해야 합니다.start_date
가 2024년이면, 2023년의 스케줄은 무시되고 2024년의 스케쥴도 무시되고 2025년 10월 1일부터 실행됩니다.
7. 추천 설정
- 2024년 10월 1일에만 실행되도록 설정하려면:
start_date=datetime(2024, 10, 1)
schedule_interval=None # 단일 실행을 원할 경우
또는
start_date=datetime(2024, 1, 1)
schedule_interval="0 0 1 10 *"
catchup=False # 과거 실행 방지
이 설정으로 원하는 실행 결과를 얻을 수 있습니다. 😊
반응형
'Data Mining & Distributed > Airflow' 카테고리의 다른 글
[ Airflow ] task_concurrency - 동일 작업 개수 제한하기 (0) | 2025.01.02 |
---|---|
[ Airflow ] RestAPI 사용하기 (0) | 2024.12.31 |
[ Airflow ] start_date, schedule 설정하기(1년 주기) (0) | 2024.12.23 |
[ Airflow ] MySQL, PostgreSQL - 기본 Database 설정하고 생성하기 (0) | 2024.12.02 |
[ Airflow ] operator - 여러 개의 operator를 생성해서 병렬 처리 확인하는 Dag 등록하기 (1) | 2024.12.02 |