使用 Python 2.6 并以被动模式从 FTP 服务器下载文件,我发现如果源文件为空(0 字节),retrbinary 会失败并超时。这是一个错误还是我缺少配置选项?
ftp.retrbinary('RETR digital.conf', open('digital.conf','wb').write)
Downloading digital.conf
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "download.py", line 13, in run
ftp.retrbinary('RETR %s' % source, callback)
File "c:\Python26\lib\ftplib.py", line 398, in retrbinary
conn = self.transfercmd(cmd, rest)
File "c:\Python26\lib\ftplib.py", line 360, in transfercmd
return self.ntransfercmd(cmd, rest)[0]
File "c:\Python26\lib\ftplib.py", line 337, in ntransfercmd
resp = self.getresp()
File "c:\Python26\lib\ftplib.py", line 216, in getresp
raise error_temp, resp
ftplib.error_temp: 421 Timeout
其他非零字节文件传输正常。
请您参考如下方法:
This is Your session idle time too long. 你可以在主席文件后进入实例化ftplib。否则。修改ftp软件配置。
比如你使用vsftpd,你可以在vsftpd.conf中添加如下配置:
idle_session_timeout=60000 # 默认为 600 秒
