FTP HANGS on very slow connection

Michal Seidl michal_seidl at yahoo.com
Thu Aug 10 18:43:35 EDT 2006


Hi,
I am trying to download data from remote ftp server connected through
GSM modem. The speed is slow 1kB/s. Despite the classic linux ftp
client works fine the ftp.retrbinary(),ftpretrlines() function from
ftplib hangs. I am able succesfuly login but a can not download. It has
probably something common with sockets.

Code:
***************************************
#Open ftp connection and downloads file
ftpDLoad = FTP(hostAdress)
ftpDLoad.set_debuglevel(2)
#ftpDLoad.sendcmd('USER xxxxx')
#ftpDLoad.sendcmd('PASS xxxxx')
ftpDLoad.login(userName,userPass)
#print ftpDLoad.login()

#Prints start time
print '###Starting sync.: ',datetime.today()

#Opens file for writing
fileObj = open(tmpDir + rFileName,'wb')

#Downloads file
#!!!!!!!!!!!
#ftpDLoad.retrbinary('RETR ' + rFileName, fileObj.write)
#!!!!!!!!!!!
ftpDLoad.retrlines('RETR' + rFileName)

#Closes file
fileObj.close()

#Checks the file size
ftpDLoad.cwd('modem')


Ouput:
******************************************
michal at telis:~/python$ ./jezeri_new_ftp.py 
*cmd* 'USER telis'
*put* 'USER telis\r\n'
*get* '331 Password required for telis\r\n'
*resp* '331 Password required for telis'
*cmd* 'PASS ******'
*put* 'PASS ******\r\n'
*get* '230 Logged on\r\n'
*resp* '230 Logged on'
###Starting sync.:  2006-08-10 22:17:06.634695
*cmd* 'TYPE A'
*put* 'TYPE A\r\n'
*get* '200 Type set to A\r\n'
*resp* '200 Type set to A'
*cmd* 'PASV'
*put* 'PASV\r\n'
Traceback (most recent call last):
  File "./jezeri_new_ftp.py", line 43, in ?
    ftpDLoad.retrlines('RETR' + rFileName)
  File "/usr/lib/python2.4/ftplib.py", line 396, in retrlines
    conn = self.transfercmd(cmd)
  File "/usr/lib/python2.4/ftplib.py", line 345, in transfercmd
    return self.ntransfercmd(cmd, rest)[0]
  File "/usr/lib/python2.4/ftplib.py", line 321, in ntransfercmd
    host, port = self.makepasv()
  File "/usr/lib/python2.4/ftplib.py", line 299, in makepasv
    host, port = parse227(self.sendcmd('PASV'))
  File "/usr/lib/python2.4/ftplib.py", line 241, in sendcmd
    return self.getresp()
  File "/usr/lib/python2.4/ftplib.py", line 207, in getresp
    resp = self.getmultiline()
  File "/usr/lib/python2.4/ftplib.py", line 193, in getmultiline
    line = self.getline()
  File "/usr/lib/python2.4/ftplib.py", line 180, in getline
    line = self.file.readline()
  File "/usr/lib/python2.4/socket.py", line 332, in readline
    data = self._sock.recv(self._rbufsize)
socket.error: (104, 'Connection reset by peer')

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 



More information about the Python-list mailing list