0
現在、私はPythonのftplibライブラリを使ってftpサーバにファイルをアップロードしようとしています。ファイルには、(〜400メガバイト)比較的小さいですが、私のスクリプトは常に同じようにクラッシュ:Python ftplib uploads failed with error 421
total_size = 492917709
Traceback (most recent call last):
File "ftpmule.py", line 83, in <module>
dest_ftp.storbinary('RETR %s' % base_fn, fhandle, 1024)
File "/usr/lib/python2.6/ftplib.py", line 233, in voidresp
resp = self.getresp()
File "/usr/lib/python2.6/ftplib.py", line 266, in getresp
raise error_temp, resp
ftplib.error_temp: 421 Data timeout. Reconnect. Sorry.
関連するコード:あなたのコメントから
dest_ftp = FTP(ftp_dest_host)
dest_ftp.login(ftp_user, ftp_pass)
dest_ftp.cwd(ftp_dest_path)
filename = "file.zip"
with open(filename, 'rb') as fhandle:
dest_ftp.storbinary('RETR %s' % filename, fhandle, 1024)
あなたが古き良きコマンドラインのftp(パイソンの外)でファイルを転送しようとしたことがあり、それが動作しませんか、同じ失敗ですか? –
はい - アップロードは正常に動作し、かなり高速です(10.59秒@ 45390.6 kB/s)。私が気付いたのは、転送が開始されたときに「200 PORTコマンドが成功しました.PASVの使用を検討してください」ということです。私は、ftplibがデフォルトでPASVを使用していることは確かです。 – tparrott
そして、コマンドラインのftpでパッシブモードを強制しようとしましたか? –