Unable to abort a FTP command?
_wdx at 163.com
_wdx at 163.com
Wed Jul 25 22:17:54 EDT 2007
Thank you. You are right, retrbinary did not notice I want to abort,
so it won't break the recv loop and close data connection. I changed
getpart and callback like this, now it works:
def getpart_callback(self, received):
print "received a packet"
if self.cnt <= 0:
return True
else:
print 'received packet, [0] = %x' % ord(received[0])
self.outf.write(received)
self.cnt -= len(received)
def getpart(self, ftp_filename, rest, cnt, out_filename):
self.outf = open(out_filename, 'wb')
self.cnt = cnt
self.handle.voidcmd('TYPE I')
conn = self.handle.transfercmd('RETR ' + ftp_filename, rest)
while 1:
data = conn.recv(8192)
if not data:
break
if self.getpart_callback(data):
try:
self.handle.abort()
break
except:
pass
self.outf.close()
self.handle.voidresp()
conn.close()
More information about the Python-list
mailing list