inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Airflow 마스터 클래스

Next dagrun 문의드립니다

해결된 질문

218

가보자고

작성한 질문수 8

0

from airflow import DAG
2import pendulum
3import datetime
4from airflow.operators.python import PythonOperator
5import random
6import time
7
8with DAG(
9    dag_id="shedule_3_hour",
10    schedule="3 * * * *",
11    start_date=pendulum.datetime(2023, 3, 1),
12    catchup=False
13) as dag:
14    def select_fruit():
15        fruit = ['APPLE','BANANA','ORANGE','AVOCADO']
16        rand_int = random.randint(0,3)
17        time.sleep(10)
18        print(fruit[rand_int])
19
20    py_t1 = PythonOperator(
21        task_id='py_t1',
22        python_callable=select_fruit
23    )
24
25    py_t1

Airflow Webserver UI DAG Detail페이지에 있는 내용 중 Next dagrun ~ 관련 항목이 이해가 안돼서 질문드립니다.

UTC 기준 10:34입니다. 설명 편의를 위해 현재시간으로 지칭하겠습니다!

Next dagrun이 2024-10-06T10:03:00+00:00 값을 가지는 이유가 궁금합니다.

Next dagrun이 다음 DAG 실행 예정 시간인거같은데 왜 현재실행 보다 과거인지 모르겠습니다.

2024-10-06T11:03:00+00:00이 맞는거 같아서요.

현재 시간이 10:34이고 3분마다 실행.
10:03은 실행완료. 이후 11:03에 실행되어야함.
Next dagrun create after : 다음 DAG은 11:03에 실행되어야하므로 11:03에 DAG Run 생성
(11:03에 실행하는) DAG 기준으로 처리해야하는 데이터 범위는 10:03~11:03이므로 Next dagrun data interval end는 11:03, Next dagrun data interval start는 10:03.


(1) Next dagrun 관련 항목의 정확한 의미와 Next dagrun과 Next dagrun create after 차이를 정확히 몰라서 생기는 문제 같기도 합니다.
(1-1) Next dagrun 관련 항목의 의미
아래 내용이 맞는지 확인 부탁드립니다!
- Next dagrun: 다음 DAG 실행 예정 시간


python 데이터-엔지니어링 airflow

답변 1

0

김현진

안녕하세요 가보자고님!

Airflow는 날짜를 항상 data_interval_start 기준으로 표현합니다.

우선 캡처해주신 그림에서 왜 Next Dagrun이 왜 10월 6일 10시 3분(UTC)으로 나왔는지 살펴보죠.

아마도 해당 DAG은 UTC 10시 3분에 돌았을 겁니다.

그럼 다음 실행 시각은 UTC 11시 3분이겠죠? 여기까지는 가보자고 님이 생각한 것과 같습니다.

 

그런데 Airflow는 항상 data_interval_start 기준으로 표현하므로,

UTC 11시 3분에 수행되어야 할 Job의 data_interval_start 는 10시 3분입니다.

그래서 Next Dagrun의 시간이 10시 3분으로 나온겁니다.

 

즉 Next Dagrun = Next Dagrun data interval start 입니다.

그리고 Next Dagrun Create After 의 의미는 해당 스케줄이 언제부터 실행되는지의 의미인데, UTC 11시 3분에 실행되어야 할 Job 이므로 11시 3분으로 표현된 것입니다.

즉 일반적으로 Next Dagrun Create After = Next Dagrun data interval end 입니다.

 

일반적으로 우리가 생각할 때 배치시간이 언제인가? 를 생각하면 보통 data interval end 를 보면 됩니다.

그런데 Airflow는 시간 표현을 항상 data_interval_start 로 표현하다보니

둘 간에 간극이 있어서 지금처럼 헷갈리는 경우가 종종 나옵니다.

 

답변이 충분히 되었는지요?

아직 해소가 안된게 있으면 또 질문 올려주세요^^

pykrx 회원제 전환으로 인한 실습 불가

0

114

2

수료증 발급

0

84

3

에러 발생 관련 질문드립니다.

0

83

2

vscode 작업화면에 오류가 발생하지 않습니다.

0

69

2

plugins 폴더 생성

0

76

2

WSL에서 git push 가 안되요 ㅠ

0

115

2

chatGPT&Airflow로 블로그 자동 포스팅하기 는 Deprecated 가 필요합니다.

0

67

2

github에 회원가입이 안되는데 원인이 뭔지 모르겠어요 ㅠ

0

738

2

설치중인데 venv를 꼭 써야할까요?

0

126

2

설치 버전 관련 질문입니다.

0

68

1

우분투 버전 다운받아야하는데 어떤걸로 설치해야할까요?

0

62

1

DAG 만들기 중 airflow 패키지 로드 에러

0

106

2

3.0에서도 수업노트가 성립하는지 확인 부탁드립니다!

0

95

3

task_id 사용법이 뭔가 바뀐 것 같습니다.

0

76

3

email operator 오류 관련

0

66

2

plugins 폴더 관련

0

100

2

bash operator 관련 문의입니다

0

78

3

스케쥴러 - DAG 파싱 부하 줄이는 과정 질문

0

79

2

Dags refresh 주기 관련 질문

0

125

2

wsl 관련 질문입니다.!

0

75

2

macOS에서 docker 설치

0

94

2

템플릿 변수에 대한 오류

0

61

2

custom_image 디렉토리 문의드립니다.

0

54

2

ETL 인터뷰 관련 문의

0

103

2