feat(airflow): пульт мира — работники и выключатель #79
Notifications
Due Date
No due date set.
Blocks
#5 Этап 3: заказы и каталог
ddmitry/clickstream-data-platform
Reference: ddmitry/clickstream-data-platform#79
Reference in New Issue
Block a user
Зачем
Прогонять модельный день сейчас нечем, кроме рук. Владельцу это мешает
проверять процессы стенда вживую, а этап 3 без дага не обойдётся вовсе:
приём заказов — пакетный забор, которым управляет Airflow
(ADR 0008).
Пульт нужен раньше этапа 3 и независимо от него: он про удобство прогона
стенда, а не про заказы. Первым он же и обкатает то, что этапу 3 понадобится
готовым — вызов генератора из задачи Airflow.
Форму пульта и способ вызова решил
ADR 0009:
работники без расписания, выключатель без своей работы, генератор — в
каноническом контейнере.
Что сделать
Работник
world_next_day— день пачкой в топикhits,schedule=None,запуск руками. Параметр «сколько дней» (умолчание 1) даёт разгон вперёд одним
нажимом.
Работник
world_live_day— один день в темпе живого режима,schedule=None, запуск руками.Выключатель
world_live— расписание около 25 минут, создаётся на паузе,вся работа —
TriggerDagRunOperatorнаworld_live_dayс ожиданием завершенияи явными состояниями отказа: упал день — покраснел и выключатель.
Общее для трёх:
DockerOperatorв образеclickstream-generator:local(сеть стенда, команда
batchилиlive); образ уже собираетmake up;к переменной не прикасается;
календарь Airflow к оси мира отношения не имеет;
за сокет докера названа там вслух.
Границы
ordersещё нет, генератора слепков тоже.etl_pipelineи переобработка партиций — этап 5, здесь их нет.world_next_day) отложена —здесь её не делать.
deferrableне применяется.Сначала прочитать
docs/adr/0009-world-control.md—форма пульта, способ вызова генератора, список «осталось проверить».
docs/specs/2026-08-01-generator.md,разделы 4 (режимы проигрывателя) и 8 (позиция на оси).
docs/adr/0008-order-ingestion.md—чем пульт прирастёт на этапе 3.
docs/adr/0003-dag-run-state.md—правило про конец графа: задача не должна зеленеть при отказе выше.
dags/test_clickhouse.py— конвенции файла дага.Проверка
make lintиmake config-testв корне зелёные.world_next_dayподряд двигают переменную на два дня, исобытия обоих доезжают до ODS (подневный счёт —
make check-clickhouse).world_next_dayс «дней = 3» кладёт три дня и двигает позицию на три.world_liveиграет день за днём сам: второй прогонначинается без нажатия, дочерний прогон виден из выключателя. Пауза
останавливает мир на границе модельных суток.
доступ к сокету и GID группы, версия провайдера docker, имя сети стенда.
feat(airflow): даг проигрыша модельного дняto feat(airflow): пульт мира — работники и выключатель