【问题标题】:Python ftplib - retrbinary fails with timeout for zero byte filesPython ftplib - retrbinary 因零字节文件超时而失败
【发布时间】:2012-05-21 09:51:35
【问题描述】:

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

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

【问题讨论】:

  • 你能用普通的 FTP 客户端获取文件吗?
  • @Wobble,是的,例如,filezilla 可以很好地处理它。

标签: python ftplib


【解决方案1】:

这是你的会话空闲时间太长了。你可以在会长文件后进入实例化ftplib。除此以外。修改ftp软件配置。

比如你使用vsftpd,可以在vsftpd.conf中加入如下配置:

idle_session_timeout=60000 # The default is 600 seconds

【讨论】:

  • 你明白自己的答案了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-16
  • 2011-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-04
相关资源
最近更新 更多