
Hi Andrew, Thanks very much for your suggestions. I modified my test app to do: size = 10*1024 deferred = ftpclient.queueStringCommand("REST %d" % size) deferred.addCallbacks(setRestSuccess, setRestFailure, callbackArgs=(filename, ftpclient)) In setRestSuccess() I receive the response: ['350 Restarting at 10240. Send STORE or RETRIEVE to initiate transfer.'] Then in setRestSuccess() I do: file_writer = FTPWriterProtocol(filename) deferred = ftpclient.retrieveFile(filename, file_writer) deferred.addCallbacks(downloadSuccess, downloadFail, callbackArgs=(file_writer,), errbackArgs=(file_writer,)) where my protocol is defined as: class FTPWriterProtocol(Protocol): def __init__(self, filename): self.file = open(filename, "ab") def close(self): print 'closing file' self.file.close() def dataReceived(self, data): print "Received %d bytes" % len(data) self.file.write(data) In downloadSuccess() I receive the response: [(1, ["150 Opening BINARY mode data connection for 'SSTEST.TXT' (522000 bytes).", '226 Transfer complete.']), (1, None), (1, None)] However, I actually receive the complete file, and not the partial download I expected. Note: when I use ftplib.FTP.retrbinary() using the "rest" arg (connecting to the same server) I do get the partial download. Any ideas why my Twisted version is not working? regards, Richard Townsend