dags 작성을 하는 경우, 아래와 같이 매주 금요일 "2022-12-09 14:00:00" 에 schedule이 실행되도록 하는 코드를 작성했다.
dag = DAG (
dag_id = 'workflow_test',
start_date = datetime(2022, 12, 9),
schedule_interval = "00 14 * * 5",
catchup = False,
tags = ['test'],
description = 'Bash Operator Sample',
default_args = default_args
)
그런데, 놀랍게도... 금요일 "2022-12-09 14:00:00" 에는 아무런 일이 발생하지 않는다. (airflow scheduler 가 돌지 않았다.)
이유는 무엇일까? Time zone이 디폴트 UTC로 잡혀있기 때문이다.
아래 링크(표준시 LINK) 를 살펴보면 한국시간(KST) 14:00 은 세계시(UTC) 로 05:00 분 이라는 사실을 알 수 있다.
https://ko.wikipedia.org/wiki/%ED%95%9C%EA%B5%AD_%ED%91%9C%EC%A4%80%EC%8B%9C
따라서, 우리는 디폴트로 설정되어 있는 UTC를 KST로 변경해줄 필요가 있다.
pendulum 모듈을 이용하면, 간편하게 변경을 할 수 있다. 앞서 작성한 dags를 아래와 같이 변경해보자.
import pendulum
## 로컬 타임존 생성
local_tz = pendulum.timezone("Asia/Seoul")
dag = DAG (
dag_id = 'workflow_test',
start_date = datetime(2022, 12, 9, tzinfo=local_tz),
schedule_interval = "00 14 * * 5",
catchup = False,
tags = ['test'],
description = 'Bash Operator Sample',
default_args = default_args
)
pedulum 모듈 내 timezone 함수를 이용해, "Asia/Seoul" 인자 로 local_tz 변수를 할당하고, 이를 start_date 내의 파라미터로 넣는 것이다. 이제 Airflow 화면으로 돌아가, next 스케줄 계획이 의도한 바와 같이 "2022-12-09 14:00" 로 잡혀있는지 확인해보자!
728x90
'Data Engineering(Pipeline, Hadoop...) > Airflow' 카테고리의 다른 글
[Airflow] 워크플로우 - R Script 실행 (0) | 2023.01.02 |
---|---|
[Airflow] Dags 관리(예제 Dags 삭제 및 Dags 경로 설정) (0) | 2022.11.24 |
[Airflow] Devops 환경 구축 (R+Python+Airflow+ssh) (0) | 2022.11.23 |
Airflow + Python 스크립트 활용 DAG 구성 (0) | 2022.10.21 |