$AIRFLOW_HOME/dags
문제는 너무 많은 DAG들이나, DAGs가 많은 외부 파일들을 이용한다는 점입니다. 이런 문제를 해결하기 위해서 DAG Folder를 어떻게 구조화하는지 알아보겠습니다.
zip file
을 만듭니다.virtual env
혹은 pip
를 사용합니다.__init__.py
파일을 통해서, 모듈을 불러올 수 있게 합니다.from functions.helpers import first_task, second_task, third_task
airflow list_dags
명령어를 사용해도, 보이지 않습니다. INFO - Filling up the DagBag from /usr/local/airflow/dags
DAG bag 폴더는 airflow.cfg
를 통해 변경할 수 있습니다.
airflow/dags/add_dagbags.py
dags 폴더 내에 py 파일을 만들고, dags 폴더 뿐만 아니라 project_a라는 폴더와, project_b라는 폴더를 dag Bag에 추가합니다.
import os
from airflow.models import DagBag
dags_dirs = ["/usr/local/airflow/project_a", "/usr/local/airflow/project_b"]
for dir in dags_dirs:
dag_bag = DagBag(os.path.expanduser(dir))
if dag_bag:
for dag_id, dag in dag_bag.dags.items():
globals()[dag_id] = dag
잘 캐치되는 것을 볼 수 있습니다. 하지만 DAGBAG에 추가된 DAG들은 UI 상에서, 에러를 보여주지 못합니다. 이것들은 로그를 통해서 확인해야합니다.
.gitignore
와 유사한 역할을 합니다..airflowignore
의 범위는 subfolder
뿐 아니라, 현재 디렉토리입니다..airflowignore
파일을 위치 시켜야합니다.