Полный рабочий процесс:
- SFTP Mirror загружает новые файлы из SFTP в корзину GCS
- Новые объекты GCS запускают функцию Cloud
- Функция Cloud запускает Composer / Airflow DAG и отправляет ему путь к новому объекту GCS
Просмотр истории выполнения DAG в пользовательском интерфейсе Composer / Airflow, где происходит сбой задачи, а затем сразу же следует ее успех.
Цель задачи - загрузить файл в BQ. Путь к файлу предоставляется облачной функцией.
Существует четкий шаблон, в котором журналы невыполненной задачи показывают, что задача пыталась обработать файл с шаблоном, подобным my_timestamped_file_name.csv.part
Следующая задача, которая успешно выполняется, показывает в журналах, что файл, который он обработал, имел тот же шаблон без .part
: my_timestamped_file_name.csv
Мне кажется, что функция облака (CF) запускается частично загруженный файл, созданный зеркалом SFTP, вместо ожидания завершения загрузки файла. Конечно, когда файл полностью загружен, файл .part
исчезает, и задача не выполняется, потому что ей нечего обрабатывать.
Тип события My Cloud Function определяется как Finalize / Create. Есть ли способ избежать частично загруженных файлов? Кроме использования хакерского условного оператора внутри CF, чтобы избежать файлов, которые заканчиваются на .part
?