작성
·
43
·
수정됨
0
안녕하세요 강사님,
2가지 질문이 있습니다.
데일리 스케줄일 때 금년 11월을 돌린다고 가정하면 기간은 2024/11/01~2024/11/30일입니다. start_date=20241101, end_date=20241130으로 설정하였고, dag를 11/17일에 실행한다고 했을 때, 11/1일부터 17일까지 다 돌면 11/18~11/30일까지는 날짜가 바뀌면 알아서 schedule_interval(매일 1시 등)에 따라 자동으로 task가 실행됐음 좋겠는데 현재 재가 테스트 해본 dag에서는 17일까지만 돌고, 11/18일이 되어도 task가 자동으로 실행이 안되네요. 11/19일이 되어도 18일날짜부터 중지되어있습니다.
비슷하게 검색했을 땐 catchup을 변경하는 방법이 있는것 같은데 이건 과거 날짜일 경우에만 해당하는것으로 보입니다. (참고로 위 dag에선 catchup=True로 했습니다만 18일은 안돌아갑니다) 저처럼 미래 날짜도 자동화하고 싶을 때 config설정 변경 등 혹시 방법이 있을까요?
날짜별로 task를 돌리는 dag가 있습니다. 특정 task가 어떤 날짜에는 success가 되지만 어떤 날짜는 job status가 "removed" 되었다고 하여 task가 실행되지 않습니다. failed라고 뜨면 log라도 확인해볼텐데 removed라 log로 원인파악할 수도 없습니다 (could not read served logs: request URL is missing an 'http://' or 'https://' protocol라고만 뜹니다) 이런 상황일 때
원인을 파악할 수 있는 방법이 있을까요? dag를 실행하는 code가 문제라고 하기에는 동일 코드로 실행한 dag가 또 특정 날짜는 잘 돌아가고, 또 어떤 날짜는 안돌아가는 증상이라 원인을 찾기가 어려워 여쭤봅니다. 제가 유추하는 원인으로는 동일한 dag_id로 code를 조금 바꿔서 다시 실행시켰었는데 이런 증상이 처음 나타났습니다. 동일한 dag_id를 재실행 할 때 주의할 점이 있나요? (기존 dag는 airflow에서 삭제해고 다시 올렸는데도 removed되는 현상이 나타나네요)
답변 2
0
안녕하세요 백미정님!
질문주신 내용의 dag 을 모두 첨부해주실 수 있나요?
dag 내용을 봐야 자세히 답변이 가능할 것 같습니다.
그리고 질문 내용 중 궁금한게 있습니다.
첫 번째 질문은 당일 날짜를 11월 17일이라 했을 때, 11월 1일부터 17일까지 일괄 수행하고, 18일부터는 스케줄이 도달함에 따라 돌게끔 하고 싶은거지요?
일단 두 번째 문제는 해결되어서 다행이네요 ^-^
첫 번째 질문건은 Airflow는 원래 그렇게 돌도록 돼있습니다. (당일 날짜를 11월 17일이라 했을 때, 11월 1일부터 17일까지 일괄 수행하고, 18일부터는 스케줄이 도달함에 따라 돌게끔)
별도로 뭐 설정을 안해도 기본적으로 18일부터는 돌아야 하는게 맞는데, 안 돌았다면 원인은 좀 찾아봐야 합니다. Airflow는 날짜 개념이 좀 헷갈릴 수 있어서 미정님께서 잘못 보신 걸 수도 있어요. 우선 만드신 DAG 코드와 안 돌았다고 한 현재 Dag run 들의 스케줄 상태좀 캡쳐해서 올려주시겠어요? 오늘 21일이니까 최근 수행된 Dag run들 현황을 캡처해서 올려주세요
0
안녕하세요, 인프런 AI 인턴입니다. 백미정님.
Airflow 스케줄링 및 DAG 작동 시 발생하는 문제들에 대해 많은 분들이 궁금해하시는 부분입니다. 두 가지 질문에 대해 각각 답변 드리겠습니다.
DAG가 18일까지 실행되지 않고 19일부터 자동으로 실행되지 않는 경우에는 일반적으로 Airflow의 catchup
설정과 start_date
, schedule_interval
의 관계를 파악하셔야 합니다. catchup
이 특히 중요한 역할을 하는데, 이 설정이 False
로 되어 있으면, 과거의 미지정된 실행을 건너뛰고 현재 시간에서부터 실행을 시작합니다.
다음 방법을 참고해 보세요:
- catchup=True
설정 유지: catchup
을 True
로 설정하면 과거의 실행도 모두 처리되지만, 이는 이미 하신 셋업이 맞다면 문제가 되지 않을 것입니다.
- execution_date
고정: DAG의 기본 스케줄러 설정과 execution_date
를 잘 설정하여 미래에도 자동 실행되도록 설정해야 합니다. 만약에도 잘 되지 않는다면 schedule_interval
과 start_date
를 다시 한번 점검해 보세요.
추가로 관련된 이 게시물에서 DAG 스케줄링 관련 설정에 대한 토론을 통해 세부적인 설정 방법에 대한 통찰을 얻으실 수도 있습니다.
Airflow에서 DAG의 task가 특정 날짜에 “removed” 상태가 되는 경우는 여러 가지 요인이 있을 수 있습니다. 몇 가지 확인해야 할 사항은 다음과 같습니다:
- Task가 수행 중인 Path와 URL 설정 문제: 디버깅 로그에 표시된 오류 메시지를 기준으로 작업 수행 중 호출하려는 로그 서버의 URL이 잘못 설정된 경우 발생할 수 있습니다. 로그 경로 및 URL을 수정 필요합니다.
- Task-specific Parameters 또는 External Dependencies: 변수 설정이나 외부 종속성이 특정 날짜에 다르게 작동할 수 있습니다.
- Airflow와 Backend Database 상태 확인: 동시 실행 문제나 리소스 제약(예: memory나 CPU 문제) 등이 있을 수 있습니다.
작업 로그와 메타데이터들을 통해 문제를 더 자세히 파악할 수 있도록 이전 응답에서 제시된 대안 및 스케줄러 최적화 기법도 유용할 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
네 강사님, 첫번째 질문 내용이 맞습니다.
그리고 두번째 질문에 대한 답은 원인을 알게되어 자문자답합니다. 저같은 상황은 소스코드를 git에 올려 airflow에 등록하는데, 서로 다른 소스코드에서 동일한 dag_id로 dag를 만들어 충돌이 났던 것이 원인이었습니다. 이전에 push한 소스코드를 삭제 했더니 task removed현상이 사라졌습니다.