Bonjour a tous,

Voila j'ai un probleme sur un de mes scripts Python 25 faisant du FTP Data binary transfer sur un server.
De temps en temps en FTP Download je perds la connection avec le server, et je recois une exception "timeout".
J'ai recu une partie du fichier avant l'exception de timeout.
J'ai essaye de faire du retry (de relancer la commande "data = conn.recv(blocksize)"), mais sans succes.

Question: Comment reprendre une connection, la ou elle s'est arretée sans tout relancer ?

Merci de votre aide.

Mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
    def retrBinary(self, remote_file, blocksize=8192, rest=None):
        try:
            self.ftptransfer.ftp.voidcmd('TYPE I')
            conn = self.ftp.transfercmd("RETR %s" % remote_file, rest)
            while 1:
                data = conn.recv(blocksize)
                if (not data) and (self.SrcRemoteFileSize != self.totalBytes):
                    # Start Retry to FTP server
                    retry=1
                    print(">>> Received Data buffer empty and file not ended, Start Retry to FTP server")
                    while ((not data) and (retry<=3)):
                        print(">>> Retry data %s" % (retry))
                        data = conn.recv(blocksize)
                        if not data: retry +=1
                        else: 
                            break
                        time.sleep(2)
                    break
 
            print "Close Download file transfer\n"
            conn.close()            
            print "DL: Return voidresp"
            return self.ftp.voidresp() 
 
        except Exception, err:
            print traceback.format_exc()
            print("Received Exception during Transfer"