Python ftplib超时
作者:互联网
我正在尝试使用ftplib获取文件列表并下载自我上次检查以来的任何新文件.我到目前为止尝试运行的代码是:
#!/usr/bin/env python
from ftplib import FTP
import sys
host = 'ftp.***.com'
user = '***'
passwd = '***'
try:
ftp = FTP(host)
ftp.login(user, passwd)
except:
print 'Error connecting to FTP server'
sys.exit()
try:
ftp.retrlines('LIST')
except:
print 'Error fetching file listing'
ftp.quit()
sys.exit()
ftp.quit()
每当我运行它时,当我尝试检索列表时它会超时.有任何想法吗?
解决方法:
很可能是主动和被动模式之间的冲突.确保满足以下条件之一:
>服务器支持PASV模式,您的客户端正在设置PASV模式
>如果服务器不支持被动模式,则防火墙必须支持主动模式FTP传输.
编辑:我查看了文档,发现在Python 2.1及更高版本中默认为被动模式.你在说什么服务器,你知道它是否支持被动模式?
在活动模式(非PASV)中,客户端发送PORT命令,告知服务器在该端口上启动DATA连接,这需要您的防火墙知道PORT命令,以便它可以将传入的DATA连接转发给您 – 几乎没有防火墙支持这个.在被动模式下,客户端打开DATA连接,服务器使用它(服务器在打开数据连接时是“被动”).
如果您没有使用被动模式,请执行ftp.set_pasv(True)并查看是否有所不同.
标签:python,ftplib 来源: https://codeday.me/bug/20191007/1868367.html