Предотвратить загрузку файла ftplib?

У нас есть настройка системы FTP для мониторинга / загрузки с удаленных серверов FTP, которые не находятся под нашим контролем. Скрипт подключается к удаленному ftp и захватывает имена файлов на сервере, затем мы проверяем, что-то уже загружено. Если он не был загружен, мы скачиваем файл и добавляем его в список.

Недавно мы столкнулись с проблемой, когда кто-то на удаленной стороне ftp скопирует один массивный файл (> 1 ГБ), затем сценарий проснется, увидит новый файл и начнет загрузку копируемого файла.

Каков наилучший способ проверить это? Я думал о том, чтобы взять размер файла и подождать несколько секунд, чтобы снова проверить размер файла и посмотреть, увеличился ли он, а если нет, то мы его скачаем. Но так как время вызывает беспокойство, мы не можем ждать несколько секунд для каждого отдельного набора файлов и посмотреть, увеличился ли его размер.

Что было бы лучшим способом для этого, в настоящее время все делается с помощью питонов ftplib, как мы можем сделать это, кроме использования вышеупомянутого метода.

Еще раз позвольте мне повторить это, мы имеем 0 контроля над удаленными FTP-сайтами.

Благодарю.

Update1:

Я думал, что, если я попытаюсь переименовать его ..., так как у нас есть полные права на FTP, если загрузка файла происходит, команда переименования потерпит неудачу?

У нас нет реальных вариантов здесь ... не так ли?

ОБНОВЛЕНИЕ 2: Хорошо, вот кое-что интересное, некоторые из протестированных нами ftps, по-видимому, автоматически распределяют пространство после начала передачи.

Например. Если я перенесу файл 200 МБ на сервер FTP. Пока передача активна, если я подключаюсь к серверу ftp и делаю размер, пока происходит загрузка. Это показывает 200 МБ для размера. Хотя файл готов только на 10%.

Полномочия также, по-видимому, устанавливаются случайным образом. Сервер FTP, который поставляется с IIS, устанавливает права ПОСЛЕ завершения копирования файла. Хотя некоторые другие старые FTP-серверы устанавливают его, как только вы отправляете файл.

: '(

Ответы на вопрос(4)

Ваш ответ на вопрос