Files
airflow-manual/docs/validation/2026-09-28-theory-review.md
T

7.6 KiB
Raw Blame History

Перепроверка педагогического ревью

Дата: 2026-09-28. Исходная версия: f6b450c. После независимого ревью замечания проверены по текстам, Compose и исполнением примеров в Apache Airflow 2.9.2.

Оценка значимости и решения

Основные задания используют готовые DAG и правильные параметры учебной БД. Подтвержденные ошибки относятся к примерам теоретических глав: они мешают студенту, который переносит код из главы в стенд. Оценка их как блокировки всей основной практики была бы завышенной.

Находка Что подтвердилось Решение
Параметры Connections из другого стенда В главе 7 предлагались postgres / airflow / airflow, хотя Compose и практика используют postgres-training / training / student Исправлены поля формы. Добавлен полный DAG проверки подключения и наблюдаемый результат в БД
Задачи без привязки к DAG Примеры greeting_dag и template_tracking_example падают при объявлении зависимостей; template_example создает DAG без задач Добавлены привязки и объяснение. Примеры шаблонов дополнены импортами и настройками, чтобы их можно было запускать целиком
Неподготовленный итоговый пример главы 9 Нет исходного CSV и подготовки схем БД, расходятся имена Variable. После подстановки Variable пример падает при создании TaskGroup Вместо отдельного пайплайна глава направляет к существующему resource_management_dag.py и блоку 8. Пример самой TaskGroup сделан самостоятельным; схема согласована с кодом
Слишком широкое чтение перед упражнениями Для XCom перед блоком 4 была указана вся глава 9 В таблице маршрута даны ссылки на нужные разделы. Callback отмечен как подготовка к дополнительному 7.B
Дополнительный опыт с Clear Нехватка понимания повторов у студентов не подтверждена. Основные задания уже показывают новые запуски и retry; в 4.1 есть объяснение различия повторной загрузки и нового CSV Обязательная практика сохранена: 16 основных и 18 дополнительных заданий. Опыт с Clear имеет смысл добавлять после наблюдения за студентами, если они путают эти случаи

Воспроизведение исходных ошибок

Код извлечен из Python-блоков глав на f6b450c и исполнен в одноразовом контейнере образа airflow-manual-practice-check:2.9.2, ранее собранного из Dockerfile стенда. Версия внутри контейнера: 2.9.2.

В неполные примеры главы 7 переданы недостающие импорты и default_args, чтобы проверить именно привязку задач. Для итогового примера главы 9 Variable.get заменен на тестовое значение строки подключения: это позволило дойти до создания TaskGroup без подготовки посторонних данных.

Пример Результат до правок
greeting_dag AirflowException: Tried to create relationships between tasks that don't have DAGs yet
template_example Разбор без исключения, список задач пуст
template_tracking_example То же исключение при создании зависимостей
customer_pipeline_enhanced AirflowException: TaskGroup can only be used inside a dag

Проверка исправленных примеров

Полные Python-блоки текущих глав исполнены без дополнений к коду. Затем вызван DAG.test() для логической даты 2024-01-02 UTC; SQL-пример дополнительно запущен для 2024-01-03 UTC.

Окружение: тот же образ Airflow 2.9.2, отдельная SQLite для метаданных и отдельная PostgreSQL 16 с базой training. Подключение my_postgres_conn передано через окружение с полями из инструкции. Контейнеры работали во внутренней сети без опубликованных портов. Каталог репозитория смонтирован только для чтения. Временные контейнеры, сеть и данные удалены после проверки.

Пример Проверенный результат
greeting_dag Две успешные задачи; функция приветствия исполнилась
template_example Одна успешная задача; результат Bash - 2024-01-02
template_tracking_example Две успешные задачи; результаты Bash - 2024-01-02 и Processing for 2024-01-02
connection_example Оба запуска успешны; to_regclass возвращает connection_demo_users, таблица содержит 0 строк
task_group_example Все семь задач успешны; проверены полные идентификаторы и шесть зависимостей, показанных на схеме

Все шесть DAG Run завершились успешно. Ссылки на файлы и разделы проверены после преобразования Markdown в HTML. Содержание упражнений после таблицы маршрута совпадает с исходной версией.

Границы проверки

DAG.test() подтверждает разбор графа, выполнение задач, подстановку шаблонов и работу SQL. Этот прогон не проверяет работу планировщика по расписанию, форму Connections и отображение графов в UI. Основные DAG стенда не менялись; прежний протокол практики остается отдельной проверкой их поведения.

Трудность и время прохождения на студентах не измерялись. Педагогическое предположение о пользе нового опыта с Clear остается гипотезой, а не открытой ошибкой реализации.