반응형

schedule_interval

Airflow에서 Dag들이 실행하는데 정시에 실행이 되지않고 약간의 초가 지난뒤에 실행되는걸 볼수있다.

Run: ... 이 부분을 확인할 것

이유는

with models.DAG(
        MAIN_DAG_ID,
        default_args=default_args,
        schedule_interval='*/30 * * * * *',
        start_date=datetime(2021, 10, 12, 0, 0, 0),
        catchup=False,
        tags=["hyper-dmp", "export", "trait", "ga", "dynamic_segment"],
) as dag:
    ...

property 중 schedule_interval 값을 6자리로 유지하면 안된다.

5자리 cron expression식으로 쓸것.

그러면 원했던 시간에 실행되는 것을 볼 수 있다.

다음으로

start_date

이 속성은 현재 시간보다 앞서나가면 실행이 안된다.

예약의 조건으로 사용하거나
catchup=true속성으로 지난 시간들의 모든 schedule을 가져올때 사용하던지 해야한다.

위 코드에 없는

execution_time

해당 부분을 dag이 실행될때 부여되는 속성이다.
이상하게도 schdule_interval을 6자리 할때도 execution_time은 정확하게 부여되었다.

중요한건 해당 execution_time이 실행될때 바로 전 타임 execution_time을 확인할 수 있다는 것이다.

예를들어

현재시간 : 13:00
with models.DAG(
        MAIN_DAG_ID,
        default_args=default_args,
        schedule_interval='*/30 * * * * *',
        start_date=datetime(2021, 10, 12, 0, 0, 0),
        catchup=False,
        tags=["hyper-dmp", "export", "trait", "ga", "dynamic_segment"],
) as dag:

위 코드로 현재시간에 실행된다면 execution_time값은 무엇일까 ?

답은

12:30

이다.

누군가의 설명에 따르면 schedule_interval 간격마다 바로 전 execution_time을 실행한다

로 이해하라고 되어있었다.

+ Recent posts