tparrott
tparrott

Reputation: 353

Python ftplib uploads failing with error 421

I'm currently trying to upload a file to a ftp server using Python's ftplib library. The file is relatively small (~400MB), but my script always crashes the same way:

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.

Relevant code:

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)

Upvotes: 0

Views: 2193

Answers (1)

Serge Ballesta
Serge Ballesta

Reputation: 148880

From you comments, the server does not support the passive mode. Python ftplib uses passive mode by default since 2.2, so you have to explicitely disable it with set_pasv(False):

dest_ftp = FTP(ftp_dest_host)
dest_ftp.login(ftp_user, ftp_pass)
dest_ftp.cwd(ftp_dest_path)
dest_ftp.set_pasv(False)

filename = "file.zip"

with open(filename, 'rb') as fhandle:
    dest_ftp.storbinary('RETR %s' % filename, fhandle, 1024)

Upvotes: 1

Related Questions