多线程FTP上传。可能吗?

时间:2010-04-03 08:07:10

标签: php python ftp curl multithreading

我需要通过FTP和SFTP将多个文件从目录上传到服务器。 我用python,paramiko和threading解决了SFTP的这个任务。但我在为FTP做这件事时遇到了问题。我试图使用ftplib for python,但它似乎不支持线程,我逐个上传所有文件,这是非常慢的。

我想知道甚至可以使用FTP协议进行多线程上传而无需创建单独的连接/授权(这需要太长时间)?

解决方案可以在Python或PHP上。也许CURL?会对任何想法表示感谢。

4 个答案:

答案 0 :(得分:2)

创建asynchronous FTP client有效,但基本上FTP协议允许同步命令。要允许并行下载/上传,您需要打开多个FTP连接。这可以通过ftplib和线程来完成。

答案 1 :(得分:1)

另一种并发方法是异步io。对于Python,异步网络的标准工具包是Twisted

在Twisted中查看此FTP客户端example

答案 2 :(得分:0)

看起来pycurl模块可能会有一些东西。

有两个例子,如果你把它们放在一起就可以了。

转到此处:http://pycurl.cvs.sourceforge.net/pycurl/pycurl/examples/

并查看retrievever-multi.py和file_upload.py,了解如何将它们组合在一起的示例。

答案 3 :(得分:0)

您可以在多个命令提示符/ shell中运行该脚本(只需确保每个文件仅由所有不同的脚本处理一次)。我不确定这个快速而肮脏的技巧是否会提高传输速度..