Как дождаться файла поставщика, приходящего в непредсказуемое время
Поставщик выкладывает суточный файл в S3 в интервале примерно с 2:00 до 6:00 — точное время каждый день разное. Пайплайн должен стартовать сразу после появления файла, а если файла нет к 7:00 — команда должна получить алерт.
Как это реализовать в Airflow?
- Поставить в начале DAG PythonOperator с time.sleep(4 * 3600), а затем читать файл.
- Запускать DAG в 7:00 «с запасом», когда файл точно уже на месте.
- Поставить сенсор на появление объекта в S3 с режимом reschedule, таймаутом до 7:00 и алертом на падение по таймауту.
- Поставить retries = 50 с интервалом 5 минут на самой задаче загрузки — она будет падать, пока файл не появится.
