В моей организации уже давно используется группа обеспечения доступности баз данных, которая запускается только по ручному триггеру. Любые внешние ресурсы, с которыми взаимодействует dag, параметризуются датой выполнения {{ds_noda sh}}.
Недавно мы конвертировали этот тег для запуска по недельному расписанию, и я обнаружил, что воздушный поток "планировщик запускает запуск группы доступности базы данных в конце его периода планирования, а не в его начале". Я не ожидал этого вообще. Я не пытаюсь обсуждать дизайн планировщиков воздушного потока, но вместо этого я ищу несколько советов о том, как писать группы обеспечения доступности баз данных, которые работают как по ручному триггеру, так и по запланированному интервалу.
Вот мои конкретные c дилеммы:
- Чтобы обойти тот факт, что планировщик использует начало периода, я мог использовать {{next_ds_noda sh}}, но тогда сработавший вручную dag никогда не будет параметризован своей собственной датой исполнения
- Когда сработал вручную, мы хотели посмотреть другой файл 7 дней назад: {{execute_date - macros.timedelta (days = 7)) .strftime ("% Y% m% d")}}. Когда сработало расписание, теперь это выглядит как 14 дней в прошлом. Как я могу выполнить sh оба?
Я не ищу прямых решений для своих дилемм, но вместо этого задаюсь вопросом, действительно ли мое намерение запустить DAG по расписанию и вручную на самом деле полностью выпало обычного? Если нет, то каковы конкретные решения для моих дилемм c ИЛИ некоторые рекомендации по написанию групп доступности баз данных, которые можно вручную запускать и планировать.