작성
·
46
0
질문이 있습니다.
[Bash Operator & 외부 쉘파일 수행하기] 강의의 22:20 즈음에 설명해주시는 Unpaused 이후 Dag 의 자동 실행이 어떤 조건에 일어나는 지를 설명해주셨습니다.
그리고 여기서 Next Run 이후의 시간에 Unpause 를 해도, 동작 안하므로 Trigger 를 수동으로 클릭해야 된다고 알려주십니다.
그런데 이후에...
[Python 오퍼레이터 기본] 강의의 10:30 즈음에 Unpause 를 누르자 자동으로 실행이 되는 걸 확인할 수 있습니다.
10:21 에는 분명 Next Run 이 2023-03-18, 06:30:00
이라서 분명 과거인데도 자동으로 시작이 되고 있습니다.
Next Run 이후의 시간대에서 Unpause 를 하면 자동 실행이 안되서 Trigger 를 한번 해줘야되는 거 아니였나요?
여기서는 왜 실행이 된 건가요??
답변 3
1
안녕하세요 식빵님
[Bash Operator & 외부 쉘파일 수행하기 부분] 에서 제가 잘못 설명드린 부분이었는데
제가 수정을 해놓겠습니다. (잘못 설명드린 점 양해 부탁드립니다)
이 부분에서 DAG을 unpause 했음에도 수행되지 않은 이유는 아래와 같습니다.
Airflow는 unpause시 마지막으로 돌았어야 할 스케줄을 돌리게 됩니다.
영상 내 현재 시간이 2023/03/19 였으므로 2023/03/04 일자 스케줄을 수행하려 시도합니다.
그러나 2023/03/04 일자 스케줄을 수행하려면 data_interval_start = 2023/02/04가 되어야 합니다.
하지만 강의 내 DAG의 start_date=2023/03/01 이기 때문에 시작되지 않은 케이스입니다. (data_interval_start < start_date 이기 때문)
따라서 Bash Operator & 외부 쉘파일 수행하기 챕터에서 DAG을 unpause 했음에도 자동 수행되지 않은 이유는
2023/03/04 일자 스케줄의 data_interval_start 가 start_date 보다 작기 떄문이었다고 보시면 되겠습니다.
반면에 [Python 오퍼레이터 기본] 챕터에서 unpause 시에 자동 수행된 이유는 마지막으로 수행되었어야 할, 그래서 실행하게 된 스케줄이 2023-03-19 06:30:00 입니다.
이 스케줄의 data_interval_start = 2023-03-18 06:30:00 입니다.
이 값은 start_date 보다 뒤에 있으므로 자동 수행된 케이스입니다.
참고로 Airflow 3.0 부터는 data_interval_start = data_interval_end = 실행된 날짜&시간 으로 나오게 됩니다. 그래서 data_interval_start 계산으로 인해 헷갈리는 부분이 많이 개선될거에요.
[Bash Operator & 외부 쉘파일 수행하기 부분] 부분 내 잘못된 내용은 편집해놓고, 수업노트로 보완을 해놓도록 하겠습니다.
감사합니다.
0
0
안녕하세요, 인프런 AI 인턴입니다. 식빵님.
질문하신 내용과 관련하여, Airflow에서 DAG가 Unpause 상태로 설정될 때 발생하는 자동 실행 조건에 대해 설명드리겠습니다. 이 상황에서 중요한 점은 DAG의 스케줄링과 상태 설정에 따른 동작입니다:
Catchup 설정: Airflow의 catchup 설정이 DAG의 과거 실행을 자동으로 반영할지를 결정합니다. catchup=False
로 설정된 경우, DAG는 과거의 실행을 건너뛰고 현재 및 미래의 실행만을 고려합니다. 이 때문에, 과거 실행 예정 시간이 있더라도 Catchup이 설정되어 있지 않다면, 현재 시점 이후로 가장 빠른 실행 시점이 도래 시 바로 실행될 수 있습니다.
Next Run의 의미: 여기서의 Next Run은 DAG가 다음에 실행될 예정인 시점을 의미합니다. 만약 Unpause 시점이 Next Run 시점 이후임에도 불구하고 DAG가 실행된다면, 이는 주로 catchup 설정에 의해 영향을 받을 수 있습니다.
Trigger 필요성: 보통은 과거 시점(Next Run에 해당하는 시간)이 지나고 나면 자동 실행되지 않고 수동 트리거가 필요합니다. 하지만 설정에 따라 그리고 실제 DAG의 스케줄 상태에 따라 자동으로 실행될 수 있는 예외 상황들이 존재합니다.
질문에서 언급하신 것은 Airflow의 기본적인 스케줄링 외에도 DAG의 현재 상태나 다른 환경 설정에 따라 다르게 작동할 수 있습니다. 자세한 상황은 강의 내에서 진행된 다른 설정과 환경을 함께 살펴보며 이해하는 것이 도움이 될 수 있겠습니다.
관련하여 더 정확한 이해를 위해 아래 게시글을 참고해 보시는 것을 추천드립니다:
- 스케줄링과 관련된 질문입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
늦은 밤까지 답변해주셔서 정말 감사합니다.