Python ftplib - retrbinary因零字节文件超时而失败

时间:2012-05-21 09:51:36

标签: python ftplib

使用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

其他非零字节文件传输正常。

1 个答案:

答案 0 :(得分:0)

这是你的会话空闲时间太长。你可以在总统之后提交实例化ftplib。除此以外。修改ftp软件配置。

例如,您使用vsftpd,您可以将以下配置添加到vsftpd.conf:

idle_session_timeout=60000 # The default is 600 seconds