Errors
Apache Airflow

Apache Airflow: How to remove default example dags in airflow

Ты поставил Airflow, зашел в веб-интерфейс, а там — зоопарк из примеров дагов. Думаешь, «ну, примеры, щас отключу». Ставишь `load_examples = False` в `airflow.c

Ты поставил Airflow, зашел в веб-интерфейс, а там — зоопарк из примеров дагов. Думаешь, «ну, примеры, щас отключу». Ставишь load_examples = False в airflow.cfg, перезапускаешь — а они всё там. Пытаешься удалить физически папку example_dags — даги становятся серыми, но не исчезают. Начинаешь сомневаться в реальности происходящего.

Знакомо? Это классика. Проблема в том, как Airflow инициализирует базу данных и кэширует примеры.

Почему load_examples = False не сработал сразу

Скорее всего, конфиг был изменен уже после первой инициализации базы. Ключевой момент — переменная load_examples проверяется только при создании метаданных в базе. Если ты впервые запустил Airflow с load_examples = True (значение по умолчанию), то примеры уже записаны в БД.

Простое изменение конфига и перезапуск процессов не удалит существующие записи. Они уже стали частью схемы Airflow.

Почему удаление папки example_dags — плохая идея

Дога стали серыми, потому что scheduler перестал находить файлы с их кодом. Но метаданные о них остались в базе. Airflow UI показывает всё, что есть в таблице dag. Это не очистка, а поломка.

При следующем обновлении пакета apache-airflow папка example_dags может вернуться, и даги снова «оживут». Ты борешься не с причиной, а со следствием.

Как правильно и навсегда

Нужно предотвратить загрузку примеров в БД с самого начала. Есть два надежных пути.

Первый — задать переменную окружения до самого первого запуска любых команд Airflow (например, airflow db init). Это самый чистый метод.

export AIRFLOW__CORE__LOAD_EXAMPLES=False
airflow db init

Если используешь Docker, установи переменную в docker-compose.yml или Dockerfile.

environment:
  - AIRFLOW__CORE__LOAD_EXAMPLES=False

Второй — убедиться, что параметр в airflow.cfg установлен ДО инициализации базы и пересоздать метаданные.

[core]
load_examples = False

Затем нужно очистить существующую базу и создать её заново. Помни, это удалит все твои даги и настройки.

airflow db reset -y
airflow db init

Что делать, если база уже рабочая и примеры там

Удалить их через CLI. Это точечная операция.

airflow dags delete example_bash_operator

Но удалять каждый даг по имени — долго. Лучше остановить их все разом, выполнив в метабазе Airflow SQL-запрос. Подключись к БД и выполни нечто вроде:

UPDATE dag SET is_active = false WHERE dag_id LIKE 'example%';

Это деактивирует все даги, чьи идентификаторы начинаются с example. Они пропадут из активного списка в UI.

Итог

Порядок действий для новой установки: выставить AIRFLOW__CORE__LOAD_EXAMPLES=False → инициализировать БД. Для уже живой системы: деактивировать примеры через базу или удалять по одному. Не трогай файлы в site-packages — это путь в никуда.