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 — это путь в никуда.