별도의 모듈을 통한 dag 객체 생성 시, 주의사항

상황

저희는 여러 도메인들에 대한 각 dag 내 task 의존성이 동일해서, dag 객체를 별도의 모듈을 통해 생성하고 있습니다.

from builder import build_dag
dag = build_dag(도메인마다 필요한 인수들) # build_dag()는 DAG 객체를 return

위의 코드를 깃허브에 커밋 후 web ui에서 확인했는데, 정의된 dag가 ui에 나오지 않고있었습니다.

원인

airflow는 dag_discovery_safe_mode 가 기본적으로 활성화 되어있는데, 이 configuration은 DAG, airflow 키워드를 모두 포함하는 파일만 스캔합니다. 이 키워드는 case-insensitive 합니다.

해결

파일 안에 case-insensitive하게, airflow와 DAG 키워드를 모두 포함시키면됩니다. 가장 단순한 방법은 함수 이름을 build_dagbuild_airflow_dag를 변경하면 됩니다.

3개의 좋아요

상황과 해결법까지..!
정보 공유해주셔서 감사합니다!!

공유 감사합니다! airflow 사용자분들에게 많은 도움이 될것 같습니다.