Ровно год назад 22 апреля 2025 свет увидела новая версия Airflow 3.0.0. Среди ключевых изменений — DAG versioning, улучшенный backfill и переход к event-driven scheduling, позволяющий реагировать на внешние события и изменения данных. Также была переработана архитектура выполнения задач: появились Task Execution Interface и Task SDK, что упростило масштабирование и повысило безопасность.

Но если отбросить архитектурные изменения, на практике больше всего ощущается именно новый UI. Он изменился настолько сильно, что даже простые операции по миграции или ежедневной работе первое время требуют заметно больше времени — к новому подходу приходится буквально привыкать заново.


Отдельно стоит отметить изменения в работе с Variables.

Если раньше можно было спокойно хранить там JSON-конфиги и редактировать их прямо в UI, то теперь:

  • поле ввода стало заметно меньше — большие структуры просто не помещаются

  • переменную нельзя переименовать — приходится создавать новую

  • вплоть до версии 3.1.8 JSON отображался одной строкой

В итоге даже простое изменение одного поля в конфиге превращается в прокрутку, копирование и попытки не ошибиться в одной длинной строке — особенно если структура нетривиальная.

В моём случае это стало критично — я активно использую Variables как JSON-конфиги для DAG’ов. Готовых решений под новый UI я не нашёл, поэтому решил сделать свой плагин, который возвращает нормальную работу с JSON и в целом упрощает взаимодействие с переменными.

Немного про 'большие' переменные

Да, формально хранить большие структуры в Variables не рекомендуется — Airflow регулярно парсит DAG’и и связанные данные. Но на практике (по крайней мере в моих кейсах) это не вызывало проблем. Зато возможность хранить весь конфиг в одном месте и менять его без деплоя DAG’а — сильно упрощает жизнь.

Если вы еще не пробовали, но хотите, то вот кусок кода, с примером того, как это происходит:

from airflow.sdk import Variable

config = Variable.get('my_dag_config', deserialize_json=True)
batch_size = config['batch_size']

Код плагина в значительной степени был сгенерирован с помощью LLM, поэтому основная ценность здесь — не в сложности реализации, а в готовом инструменте и удобстве использования.

Начало работы

Для старта достаточно установить пакет:

pip install airflow-variable-json-viewer

Если Airflow изолирован от интернета — можно просто скопировать папку плагина в $AIRFLOW_HOME/plugins и перезапустить сервисы.

После установки плагин появится в разделе Admin:

Пункт меню
Пункт меню

Либо можете попасть в него по прямой ссылке: http://<your-airflow-host>/variable-json/

Сравнение

Что даёт плагин:

  • форматированное отображение JSON

  • редактирование без “одной строки”

  • список и просмотр в одном окне

  • поиск по названиям

  • возможность переименования

Сам плагин выглядит вот так:

Интерфейс плагина
Интерфейс плагина
Светлая тема
Светлая тема
Светлая тема

Для сравнения эта же переменная в оригинальном UI версии 3.1.2 будет отображаться следующим образом:

Стандартный интерфейс Variables
Стандартный интерфейс Variables
Изменение после 3.1.8

Как я уже говорил, потерю форматирования пофиксили в Airflow 3.1.8, что произошло совсем недавно, 12 марта 2026. После фикса переменная будет выглядеть уже так:

Стандартный интерфейс Variables в версии 3.1.8 и выше
Стандартный интерфейс Variables в версии 3.1.8 и выше

Стандартный интерфейс всё ещё:

  • разделяет список и редактирование

  • не даёт переименовывать переменные

  • не очень удобен для навигации по большим структурам

Именно здесь плагин даёт основное улучшение.

Итог

На практике это даёт более удобный сценарий работы: список переменных и их содержимое находятся в одном окне, можно быстро переключаться между значениями и сразу видеть структуру. Есть поиск по названиям и описание, а через кнопку + New можно добавить новую переменную. В отличие от стандартного UI, имя переменной можно изменить даже после создания.

Если вы активно используете Variables как конфигурацию, возможно, такой подход с отдельным UI тоже окажется полезным. Буду рад фидбеку и идеям. Если инструмент пригодился — можно поддержать проект звездой на GitHub: MrNightSky/airflow-variable-json-viewer

Комментарии (0)