多线程FTP上传,可以吗?

3 投票
4 回答
5608 浏览
提问于 2025-04-15 21:11

我需要通过FTP和SFTP把多个文件从一个文件夹上传到服务器。对于SFTP,我已经用Python、paramiko和线程解决了这个问题。但是在FTP上遇到了麻烦。我尝试使用Python的ftplib,但它似乎不支持多线程,所以我只能一个一个地上传文件,这样速度非常慢。

我在想,使用FTP协议进行多线程上传是否可能,而不需要创建单独的连接或授权(这样会花费太多时间)?

解决方案可以用Python或PHP来实现。也许可以用CURL?任何想法我都非常感激。

4 个回答

0

看起来可以用pycurl这个模块来实现一些功能。

这里有两个例子,如果把它们结合起来就能工作了。

你可以去这个链接看看: http://pycurl.cvs.sourceforge.net/pycurl/pycurl/examples/

在里面找找retriever-multi.py和file_upload.py这两个文件,看看怎么把它们组合在一起。

1

除了通过其他方式实现并发,另一种方法是使用异步输入输出。在Python中,处理异步网络的标准工具是Twisted

你可以看看这个FTP客户端的示例,它是用Twisted写的。

2

现在有一个在制作异步FTP客户端的努力,但其实FTP协议本身是让命令一个接一个地执行的。要实现同时下载或上传,你需要打开多个FTP连接。这个可以通过使用ftplib和线程来实现。

撰写回答