Errors
airflow

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-errorspython dag.py → проверить путь → проверить git-sync. В 90% случаев проблема найдётся на первом шаге.