상황
저희는 여러 도메인들에 대한 각 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_dag
→ build_airflow_dag
를 변경하면 됩니다.