Задержка между задачами в Airflow или другом варианте?
Мы используем воздушный поток 2.00. Я пытаюсь реализовать DAG, который выполняет две функции:
- Запуск отчетов через API
- Скачивайте отчеты из источника в пункт назначения.
Между задачами 1 и 2 должен быть промежуток не менее 2–3 часов. Из моего исследования у меня есть два варианта.
- Две группы DAG для двух задач. Запланируйте 2-й DAG через два часа от 1-го DAG
- Задержка между двумя задачами, как указано здесь
Есть ли предпочтение между двумя вариантами. Есть ли третий вариант с Airflow 2.0? Пожалуйста, порекомендуйте.
2 ответа
Другой вариант - установить датчик, ожидающий появления отчета. Вы можете использовать режим перепланирования датчиков, чтобы освободить рабочие места.
generate_report = GenerateOperator(...)
wait_for_report = WaitForReportSensor(mode='reschedule', poke_interval=5 * 60, ...)
donwload_report = DonwloadReportOperator(...)
generate_report >> wait_for_report >> donwload_report
Третий вариант - использовать датчик между двумя задачами, ожидающий готовности отчета. Вне-полки один , если есть один для источника, или обычай один , что подклассы в базовый датчике .
Первые два варианта представляют собой разные реализации фиксированного времени ожидания. С ним две проблемы: 1. Что делать, если отчет все еще не готов по прошествии заданного времени? 2. Ненужное ожидание, если отчет готов раньше.