Обновить практику Airflow: основной маршрут и задания по желанию #1

Merged
ddmitry merged 6 commits from work/airflow-practice-refresh into main 2026-09-28 17:20:50 +03:00
Owner

Summary

Практика знакомства с Airflow 2.9.x: восемь блоков, 16 основных упражнений и 18 по желанию. Изменения основных заданий сохраняются внутри блока; перед следующим указано исходное состояние. Дополнительные упражнения не нужны для продолжения.

Главы учебника → нужный раздел теории → готовый DAG
  → изменение кода или настройки
  → результат в графе, логах, файле или таблице
  → следующий блок
  ↳ усложнения по желанию с условиями возврата

Задания перенесены в корень. Ветвление и ошибки управляются Variables; SQL оставляет данные для проверки; ETL читает результаты Extract; DQ сохраняет отказ. Добавлен пример пулов и XCom. Главы 2, 7 и 9 согласованы со стендом, исправлены привязки задач и TaskGroup к DAG.

Evidence

  • Before: greeting_dag и пример шаблонов падали при создании зависимостей; другой пример создавал пустой DAG, итоговый пример главы 9 падал при создании TaskGroup. Ошибки воспроизведены в Airflow 2.9.2.
    After: пять исправленных примеров прошли шесть запусков через DAG.test(), включая два SQL-запуска на отдельной PostgreSQL. Протокол перепроверки.
  • Before: SQL-пример очищал таблицу после выполнения; Transform обходил файлы Extract; случайность затрудняла повторение опыта с ошибкой.
    After: основной маршрут и дополнительные упражнения с восстановлением пройдены в изолированном стенде Airflow 2.9.2. Проверены девять DAG без Import Errors, данные, состояния и ожидаемые отказы; сохранены 70 контрольных и диагностических запусков и протокол практики.

В UI проверены граф, логи попыток, XCom, Rendered Templates, TaskGroup и Pools. После правок теории проверены 63 локальные ссылки и якоря в отрисованном Markdown; git diff --check проходит.

DAG сохраняет failed при успешном обработчике ошибки

Границы проверки: SMTP проверен локальным приемником; внешний провайдер, TLS и Windows отдельно не проверялись. Последняя проверка примеров глав выполнена через DAG.test(), без повторного прогона UI. Время и трудность прохождения на студентах не измерялись.

Merge Danger

Door: two-way

Код и документы можно откатить; уже выполненные изменения учебных данных откат Git не отменяет. SQL-пример очищает public.students_sample перед вставкой трех строк.

Blast Radius: стенд

Меняются графы и некоторые task_id в SQL, ETL, ветвлении и обработке ошибок: перед обновлением существующего стенда следует завершить активные запуски и сохранить собственные правки DAG. Старые внешние ссылки на airflow-docker/educational-tasks.md потребуют замены на корневой путь. Compose, версии зависимостей и схема томов не меняются.

## Summary Практика знакомства с Airflow 2.9.x: восемь блоков, 16 основных упражнений и 18 по желанию. Изменения основных заданий сохраняются внутри блока; перед следующим указано исходное состояние. Дополнительные упражнения не нужны для продолжения. ```text Главы учебника → нужный раздел теории → готовый DAG → изменение кода или настройки → результат в графе, логах, файле или таблице → следующий блок ↳ усложнения по желанию с условиями возврата ``` [Задания](https://git.dementev.space/ddmitry/airflow-manual/src/commit/26730c648357712a4074207f148fb513549ecb49/educational-tasks.md) перенесены в корень. Ветвление и ошибки управляются Variables; SQL оставляет данные для проверки; ETL читает результаты Extract; DQ сохраняет отказ. Добавлен пример пулов и XCom. Главы 2, 7 и 9 согласованы со стендом, исправлены привязки задач и TaskGroup к DAG. ## Evidence - **Before:** `greeting_dag` и пример шаблонов падали при создании зависимостей; другой пример создавал пустой DAG, итоговый пример главы 9 падал при создании TaskGroup. Ошибки воспроизведены в Airflow 2.9.2. **After:** пять исправленных примеров прошли шесть запусков через `DAG.test()`, включая два SQL-запуска на отдельной PostgreSQL. [Протокол перепроверки](https://git.dementev.space/ddmitry/airflow-manual/src/commit/26730c648357712a4074207f148fb513549ecb49/docs/validation/2026-09-28-theory-review.md). - **Before:** SQL-пример очищал таблицу после выполнения; Transform обходил файлы Extract; случайность затрудняла повторение опыта с ошибкой. **After:** основной маршрут и дополнительные упражнения с восстановлением пройдены в изолированном стенде Airflow 2.9.2. Проверены девять DAG без Import Errors, данные, состояния и ожидаемые отказы; сохранены [70 контрольных и диагностических запусков](https://git.dementev.space/ddmitry/airflow-manual/src/commit/26730c648357712a4074207f148fb513549ecb49/docs/validation/2026-09-28-practice-runs.jsonl) и [протокол практики](https://git.dementev.space/ddmitry/airflow-manual/src/commit/26730c648357712a4074207f148fb513549ecb49/docs/validation/2026-09-28-practice.md). В UI проверены граф, логи попыток, XCom, Rendered Templates, TaskGroup и Pools. После правок теории проверены 63 локальные ссылки и якоря в отрисованном Markdown; `git diff --check` проходит. ![DAG сохраняет failed при успешном обработчике ошибки](https://git.dementev.space/ddmitry/airflow-manual/raw/commit/26730c648357712a4074207f148fb513549ecb49/_attachments/practice-failed-run.png) Границы проверки: SMTP проверен локальным приемником; внешний провайдер, TLS и Windows отдельно не проверялись. Последняя проверка примеров глав выполнена через `DAG.test()`, без повторного прогона UI. Время и трудность прохождения на студентах не измерялись. ## Merge Danger **Door:** two-way Код и документы можно откатить; уже выполненные изменения учебных данных откат Git не отменяет. SQL-пример очищает `public.students_sample` перед вставкой трех строк. **Blast Radius:** стенд Меняются графы и некоторые `task_id` в SQL, ETL, ветвлении и обработке ошибок: перед обновлением существующего стенда следует завершить активные запуски и сохранить собственные правки DAG. Старые внешние ссылки на `airflow-docker/educational-tasks.md` потребуют замены на корневой путь. Compose, версии зависимостей и схема томов не меняются.
ddmitry added 6 commits 2026-09-28 17:15:45 +03:00
Управляемые ветки и ошибки, зависимости общих обработчиков, сохранение SQL-результата и фактическое чтение результатов Extract. Добавлен пример пулов и XCom; DQ-сводка сохраняет отказ при all_done.

Проверено на Airflow 2.9.2: импорт и запуск девяти исходных DAG, выбор веток, повтор и окончательные отказы обеих рабочих задач, отрицательный DQ-сценарий и восстановление, фильтрация Extract и ожидание слотов.
Восемь блоков с явным началом, последовательными изменениями и наблюдаемыми результатами. Дополнительные упражнения имеют отдельные зависимости и условия возврата. Обновлены README, справочник DAG и пример уведомлений.

Проверены ссылки, якоря, отрисовка Markdown и основные сценарии в Airflow 2.9.2. Проверки дополнительных упражнений продолжаются и фиксируются в плане.
Уточнены порядок CSV/COPY, расположение логов callbacks, шаблонов и управления TaskGroup. Сохранены условия проверки, результаты 69 контрольных запусков и одного диагностического, SHA-256 DAG и снимки UI. Все этапы плана закрыты.

Основной и дополнительный маршруты проверены на Airflow 2.9.2. SMTP проверен локальным приемником, включая отказ доставки; внешняя почта и Windows отдельно не проверялись. Тестовые контейнеры и тома удалены.
ddmitry merged commit 6d96097d50 into main 2026-09-28 17:20:50 +03:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ddmitry/airflow-manual#1