Многопоточная загрузка по FTP. Является ли это возможным? - PullRequest
3 голосов
/ 03 апреля 2010

Мне нужно загрузить несколько файлов из каталога на сервер через FTP и SFTP. Я решил эту задачу для SFTP с python, paramiko и threading. Но у меня проблема с этим для FTP. Я попытался использовать ftplib для python, но похоже, что он не поддерживает многопоточность, и я загружаю все файлы по одному, что очень медленно.

Мне интересно, возможно ли вообще выполнять многопоточную загрузку по протоколу FTP без создания отдельных подключений / авторизаций (это занимает слишком много времени)?

Решение может быть на Python или PHP. Может быть, CURL? Буду благодарен за любые идеи.

Ответы [ 4 ]

2 голосов
/ 03 апреля 2010

Существует способ создания асинхронного FTP-клиента , но в основном протокол FTP допускает синхронные команды. Чтобы разрешить параллельные загрузки / выгрузки, вам нужно открыть несколько FTP-соединений. Это можно сделать с помощью ftplib и threads.

1 голос
/ 03 апреля 2010

Другой подход к параллелизму, кроме сквозного, - асинхронный ввод-вывод. Для Python стандартный набор инструментов для асинхронной сети: Twisted .

Взгляните на этот FTP-клиент пример в Twisted.

0 голосов
/ 18 июля 2011

Вы можете запустить скрипт в нескольких командных приглашениях / оболочках (просто убедитесь, что каждый файл обрабатывается только один раз всеми различными скриптами). Я не уверен, что этот быстрый и грязный трюк улучшит скорость передачи, хотя ..

0 голосов
/ 14 апреля 2010

Похоже, что-то может быть возможно с модулем pycurl.

Есть два примера, которые, если вы сложите их вместе, будут работать.

Перейдите сюда: http://pycurl.cvs.sourceforge.net/pycurl/pycurl/examples/

и посмотрите в retriever-multi.py и file_upload.py примеры того, как их можно собрать вместе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...