Библиотеки Python для загрузки/выгрузки по FTP?

Итак, немного вперед:

У нас есть сервис/демон, написанный на питоне, который отслеживает удаленные ftp-сайты. Эти сайты не находятся под нашим управлением, некоторые из них НЕ имеют права на удаление/переименование/запись, некоторые также используют очень старое программное обеспечение ftp. Такие, что некоторые команды не работают. Ни один из этих ftp не стандартизирован, и они находятся вне нашего контроля (правительства).

Около года назад я написал библиотеку-оболочку ftp для дома, которая в основном добавляет такие вещи, как возобновление загрузки/возобновление загрузки/проверка файлов, которые в данный момент не записываются, и т. д. Проблема в том, что мы вскоре обнаружили, что из-за большого количества ftp-серверы, работающие под управлением werid/нестандартного программного обеспечения, мы постоянно боролись с библиотекой-оболочкой/ftplib.

В основном я отказался от ftplib. Есть ли альтернатива? Я просмотрел большинство альтернатив ftp, у всех отсутствует тот или иной ключевой компонент функциональности.

Каким бы ни был выбор, он должен работать на Python 2.5.2 (мы не можем его изменить). и должен работать на Linux/Windows/HP-UX.

Обновлять:

Извините, я забыл сказать вам альтернативы, на которые я смотрел:

  1. ftputil, проблема в том, что он не поддерживает возобновление загрузки/выгрузки и такие вещи, как частичная загрузка файлов с заданным смещением.
  2. Pycurl выглядел хорошо, я посмотрю на него снова.

person UberJumper    schedule 06.07.2009    source источник


Ответы (2)


Вы не упомянули, какие альтернативы вы уже рассматривали. Является ли ftputil одним из них?

http://ftputil.sschwarzer.net/trac/wiki/Documentation

Если вы пытаетесь кодировать пограничные случаи из различных реализаций сервера, возможно, вам лучше взглянуть на код, используемый Mozilla/Firefox. Я думаю, это одна из вещей, с которыми им приходится иметь дело постоянно.

person ars    schedule 06.07.2009
comment
Основная проблема с ftputil заключается в том, что он истекает через 600 секунд. Передача продолжится в фоновом режиме в потерянном потоке, но вы потеряете над ним контроль и вам никогда не сообщат о завершении. - person MFB; 18.10.2016

Возможно, вам больше повезет с одной из привязок cURL, например pycURL.

person Dana the Sane    schedule 06.07.2009