Как определить тайм-ауты ftp-сервера в Python
Загрузка большого количества файлов на FTP-сервер. В середине моей загрузки время сервера не позволяет мне загружать все дальше. Кто-нибудь знает, как определить, был ли сервер тайм-аутом, повторно подключить и продолжить передачу данных? Я использую библиотеку ftp для Python для передачи.
благодаря
- В Google App Engine на Python, как вы определяете, использует ли JPEG цветовое пространство CMYK и как его преобразовать в RGB?
- Каковы плюсы и минусы различных реализаций Python?
- Python readline () из строки?
- Почему существует огромная разница в производительности между этими двумя кодами в Python и Cython?
- Среднее количество деталей в списке списков
Вы можете просто указать тайм-аут для подключения, но для тайм-аутов во время передачи файлов или других операций это не так просто.
Поскольку storbinary и retrbinary методы позволяют вам обеспечить обратный вызов, вы можете реализовать сторожевой таймер. Каждый раз, когда вы получаете данные, вы возвращаете таймер. Если вы не получите данные по крайней мере каждые 30 секунд (или что-то еще), сторожевой пейджер попытается прервать и закрыть сеанс FTP и отправить событие обратно в цикл событий (или что-то еще).
ftpc = FTP(myhost, 'ftp', 30) def timeout(): ftpc.abort() # may not work according to docs ftpc.close() eventq.put('Abort event') # or whatever timerthread = [threading.Timer(30, timeout)] def callback(data, *args, **kwargs): eventq.put(('Got data', data)) # or whatever if timerthread[0] is not None: timerthread[0].cancel() timerthread[0] = threading.Timer(30, timeout) timerthread[0].start() timerthread[0].start() ftpc.retrbinary('RETR %s' % (somefile,), callback) timerthread[0].cancel()
Если этого недостаточно, кажется, вам придется выбрать другой API. В Twisted framework есть поддержка протокола FTP, которая позволит вам добавить логику тайм-аута.
- Python a, b = b, a + b
- Безопасно ли использовать pip с git repo?
- извлечь последние два поля из split
- Ошибка поврежденной трубы в Django Nonrel при загрузке localhost
- Альтернативы вывода в Python
- Подсчитать количество воскресенья в текущем месяце
- Как передать список функций и все его аргументы для выполнения в другой функции в python?
- получение имени переменной в python во время выполнения?
- Установите значение в dict, только если значение еще не установлено