Commands
Apache Airflow

airflow dags list-import-errors: Ошибки импорта DAG: почему DAG не появился в UI

Ошибки импорта DAG: почему DAG не появился в UI

Команда airflow dags list-import-errors — это ваш главный детектив, когда DAG внезапно пропал из интерфейса. Она показывает файлы, в которых Airflow не смог выполнить импорт из-за синтаксических ошибок или проблем с зависимостями.

Базовый синтаксис

Самый частый вариант использования — с флагом --output для удобного чтения. Запускается из среды, где установлен и настроен Airflow.

airflow dags list-import-errors --output table

Что делает каждая часть:

  • airflow dags — обращение к подсистеме управления DAG.
  • list-import-errors — конкретная команда для вывода списка ошибок импорта.
  • --output table — форматирует вывод в виде читабельной таблицы с колонками File и Traceback.

Полезные флаги

Основной флаг — --output. Помимо table, полезен вариант json, когда вывод нужно пропустить через другой скрипт для автоматической обработки, например, в CI/CD.

airflow dags list-import-errors --output json

Это понадобится, если вы пишете скрипт для алертинга в Slack или создания тикета при обнаружении новых ошибок. JSON легко парсится.

Типичные сценарии

Сценарий 1: Проверка после деплоя. Вы залили несколько новых DAG-файлов через Git, но в UI их нет. Вместо долгого просмотра логов веб-сервера сразу смотрите на ошибки импорта.

# Быстро понять, в каких файлах проблема
airflow dags list-import-errors --output table

Сценарий 2: Поиск “хромых” DAG. Некоторые DAG могут появляться в UI, но периодически пропадать из-за плавающих ошибок (например, проблемы с динамическим импортом модулей). Можно создать cron-задачу, которая считает количество строк в выводе команды.

# Если ошибок больше нуля — отправить алерт
airflow dags list-import-errors --output table | wc -l

Сценарий 3: Интеграция в CI/CD. В пайплайне деплоя, перед тем как пушить изменения в прод, можно выполнить проверку.

# Если команда вернула непустой вывод — пайплайн падает
airflow dags list-import-errors --output json | jq 'length > 0'

Частые ошибки

Ошибка: “airflow: command not found”. Часто возникает при запуске команды вне виртуального окружения или из-под неправильного пользователя. Убедитесь, что вы активировали окружение Airflow или используете полный путь к бинарнику.

Ошибка: “Can’t find a viable Airflow core settings file…”. Команда запущена не из корневой директории Airflow (AIRFLOW_HOME) или не указаны нужные переменные окружения. Перейдите в AIRFLOW_HOME или явно экспортируйте эту переменную перед вызовом.