Airflow DAG не появляется в UI. Кто украл код?
Создал DAG, положил в директорию, судорожно обновляешь webserver — а его всё нет. Разбираем по порядку.
Ты навайбкодил создал даг, положил его в директорию или закоммитил и начал судорожно обновлять свой webserver в поисках своего DAG — а его всё нет. Начинаешь думать что либо ты что-то сделал не так, либо всё сломалось. На самом деле может быть и то и то, или что-то одно, или виноваты квазары.
Где потерялся DAG
Для версии airflow <3 (о, сердечко) scheduler сканирует папку с дагами раз в n секунд. По дефолту это 300 секунд, можно посмотреть и поменять — тут как говорится it depends^^
# airflow.cfg
[scheduler]
dag_dir_list_interval = 30
Или через переменную среды, конфигмапу в кубере или как там у тебя развернут этот airflow.
AIRFLOW__SCHEDULER__DAG_DIR_LIST_INTERVAL=30
Но скорее всего дело не в этом. Скорее всего у тебя ошибка импорта.
Ошибка импорта которую ты не заметил
airflow dags list-import-errors
Вот эта команда. Запомни её. Она экономит часы. Если твой DAG падает при импорте — в UI его не будет. Может вывалиться окошко с ошибками сверху в UI, но и то не всегда.
Типичные причины:
# Забыл установить пакет (или индус обновил и сломал его)
from airflow.providers.google.cloud.operators.bigquery import BigQueryOperator
# ModuleNotFoundError: No module named 'apache-airflow-providers-google'
# Опечатка в пути к модулю
from my_utils import helper # а файл лежит в my_util без s
# Синтаксическая ошибка
def my_dag(
# забыл закрыть скобку
Запусти python /path/to/your/dag.py прямо в контейнере scheduler — увидишь ошибку мгновенно, без ожидания.
Файл есть, импорт чистый, DAG всё равно нет
Проверь что файл в правильной директории:
# Где Airflow ищет DAG'и
airflow config get-value core dags_folder
# Список файлов которые он видит
airflow dags list 2>&1 | grep "your_dag_name"
Если используешь K8s и монтируешь DAG’и через git-sync — убедись что sync прошёл:
kubectl logs -n airflow -l component=git-sync --tail=20
Итог
Порядок отладки: list-import-errors → python dag.py → проверить путь → проверить git-sync. В 90% случаев проблема найдётся на первом шаге.