본문 바로가기

OpenSource/Airflow

[Airflow] schedule_interval을 한국시간으로 설정하기

기본적으로 airflow는 UTC 시간을 기준으로 하고 있기 때문에 start_date 속성이나 schedule_interval 같은 속성을 사용할때 한국시간 - 9시간 으로 계산하여 입력하는데 무척이나 불편하다.

오늘은 timezone 설정을 통해 schedule_interval 설정을 한국시간으로 입력하도록 해보겠다.

pendulum을 이용한 타임존 지정

from datetime import datetime

import pendulum
from airflow import DAG
from airflow.operators.bash_operator import BashOperator

## 로컬 타임존 생성
local_tz = pendulum.timezone("Asia/Seoul")

## start_date의 tzinfo를 Asia/Seoul로 지정
default_args = {
    'owner': 'Airflow',
    'depends_on_past': False,
    'start_date': datetime(2020, 3, 10, tzinfo=local_tz),
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 1,
    'catchup': False
}

## schedule_interval을 한국 시간으로 입력
dag = DAG('timezone_dag', default_args=default_args, schedule_interval="46 11 * * *")

task = BashOperator(
    task_id="echo_time",
    bash_command="date",
    dag=dag
)

 

출력 결과

[2020-03-26 11:46:07,198] {bash_operator.py:115} INFO - Running command: date
[2020-03-26 11:46:07,203] {bash_operator.py:124} INFO - Output:
[2020-03-26 11:46:07,206] {bash_operator.py:128} INFO - Thu Mar 26 11:46:07 KST 2020