3

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

他のゼロバイト以外のファイルは正常に転送されます。

4

1 に答える 1

0

これはあなたのセッションのアイドル時間が長すぎます。大統領の後にインスタンス化 ftplib にファイルできます。さもないと。ftp ソフトウェア構成を変更します。

たとえば、vsftpd を使用する場合、次の構成を vsftpd.conf に追加できます。

idle_session_timeout=60000 # The default is 600 seconds

于 2013-09-18T03:35:01.467 に答える