У нас есть настройка системы ftp для мониторинга / загрузки с удаленных серверов ftp, которые не находятся под нашим контролем. Скрипт подключается к удаленному ftp и захватывает имена файлов на сервере, затем мы проверяем, что-то уже загружено. Если он не был загружен, мы загружаем файл и добавляем его в список.
Недавно мы столкнулись с проблемой, когда кто-то на удаленной стороне ftp скопирует один массивный файл (> 1 ГБ), затем сценарий проснется, увидит новый файл и начнет загружать файл, который копируется.
Какой лучший способ проверить это? Я думал о том, чтобы взять размер файла и подождать несколько секунд, чтобы снова проверить размер файла и посмотреть, увеличился ли он, а если нет, то мы его скачаем. Но так как время вызывает беспокойство, мы не можем ждать несколько секунд для каждого отдельного набора файлов и посмотреть, увеличился ли его размер.
Каков наилучший способ сделать это, в настоящее время все делается с помощью pytons ftplib, как мы можем сделать это, кроме использования вышеупомянутого метода.
Еще раз позвольте мне повторить это, мы имеем 0 контроля над удаленными FTP-сайтами.
Спасибо.
Update1:
Я думал, что если я попытаюсь переименовать его ... поскольку у нас есть полные права на ftp, если загрузка файла выполняется, команда переименования завершится неудачно?
У нас здесь нет реальных вариантов ... не так ли?
UPDATE2:
Что ж, вот кое-что интересное: некоторые из ftps, на которых мы тестировали, автоматически распределяют пространство после начала передачи.
например. Если я перенесу файл 200 МБ на сервер FTP. Пока передача активна, если я подключаюсь к серверу ftp и делаю размер, пока происходит загрузка. Это показывает 200 МБ для размера. Даже если файл готов только на 10%.
Полномочия также, по-видимому, устанавливаются случайным образом. Сервер FTP, поставляемый с IIS, устанавливает права ПОСЛЕ завершения копирования файла. В то время как некоторые другие старые FTP-серверы устанавливают его, как только вы отправляете файл.
: '(