인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

Hyeonghwan Kwon님의 프로필 이미지
Hyeonghwan Kwon

작성한 질문수

Airflow 마스터 클래스

스케줄링과 관련된 질문입니다.

해결된 질문

작성

·

174

0

섹션3, 첫번째 강의에서 스케줄에 관한 질문입니다.

 

강의에서,

start_date = 2023.1.1

schedule = "30 6 * * *"

next_run = 2023 03 18 6:30

그리고 현재 날짜는 2023 03 19

인것으로 봤는데,

 

next_run이 현재날짜보다 뒤에 있으니 pause -> unpause 를 하게되면 자동실행이 안되어야 하는거 아닌가요? 강의에서는 자동으로 실행되는것으로 봐서요.

 

감사합니다.

답변 1

1

김현진님의 프로필 이미지
김현진
지식공유자

안녕하세요 Hyeonghwan Kwon 님

좋은 질문 올려주셔서 감사합니다. 그리고 내용 중 설명이 부족한 부분이 있습니다.

우선 Airflow에서 Dag을 catchup=False로 설정한 상태에서 unpause로 활성화 했을 때, 기본적으로 가장 마지막으로 돌았어야 할 배치일자를 실행시키게 되어있습니다.

예를 들어 수업 내용에서와 같이

  • 매월 첫째주 토요일에 수행되는 Monthly 작업

  • 현재: 2023/03/19

이런 조건이라면 마지막으로 돌았어야 할 배치는 3월 첫째주 토요일인 2023/03/04 입니다. 하지만 강의에서 보다시피 unpause 했을 때 자동으로 시작되지 않았죠. 그 이유는 start_date 때문입니다.

 

  • 마지막으로 돌았어야 할 배치의 data_interval_end는 2023/03/04 이고 배치의 data_interval_start는 2023/02/04 입니다.

  • 그러나 start_date를 2023/03/01 로 주었습니다.

  • start_date가 2023/02/04 이후에 있기 때문에 해당 구간의 배치가 돌지 않은 것입니다.

만약 start_date를 2023/02/04 이전으로 주면 unpause 했을 때 자동적으로 한번 수행될 겁니다.

지금 설명한 것을 그림으로 나타내면 아래와 같습니다.

 

image

종합하자면 UI에서 보이는 Next Run보다 현재 날짜가 우측에 있다고 무조건 안 도는 것은 아니고 dag의 start_date가 지난 배치의 data_interval_start 보다 뒤에 있게 되면 안 돌게 됩니다.

강의 내용 전달에 미스가 있었던 것 같습니다. ^^

너그러이 양해 부탁드립니다.

 

새해 복 많이 받으세요!

감사합니다. 이해가 잘되었습니다.

그런데 강의에서 pause -> unpause로 돌렸을때, 따로 수동 실행없이 Grid탭으로 넘어갔을때, 실행되어있는것을 보면, 자동실행된것이 아닌가요?

김현진님의 프로필 이미지
김현진
지식공유자

혹시 섹션 3의 첫 번째 강의 보신건가요?

위에 설명드린 것은 섹션2의 4번째 강의를 보고 설명드렸습니다 ^^

섹션3 첫번째 강의의 dags_python_operator dag 실습을 보신게 맞다면 해당 dag은 daily job 입니다.

  • 해당 실습일이 2023.03.19 이었으므로

  • 마지막으로 돌았어야 할 배치는 2023.03.18 06:30 배치입니다.

  • 이 배치의 data_interval_start는 2023.03.17 06:30이고 start_date 보다 크므로 unpause 시켰을 때 정상적으로 수행된 것입니다.

     

이해되셨을까요?

감사합니다!

Hyeonghwan Kwon님의 프로필 이미지
Hyeonghwan Kwon

작성한 질문수

질문하기