Seite 1 von 1

FTPlib und Verbindungsausfälle

Verfasst: Freitag 3. Februar 2012, 08:33
von koetom
Hallo zusammen,

ich bin noch recht neu in Sachen Python und habe folgendes Problem:
Mein Programm holt per aktiv FTP von einem Server Daten ab. Das klappt auch alles wunderbar. Nur wenn wärend einer laufenden Datenübertragung mal die Verbindung ausfällt hängt der Abholprozess (RETRbinary) der FTPlib und mein Programm bleibt stehen bis ich es mit STRG-C beende.

Ich hab keine Idee wie ich das machen könnte das er solche Hänger selber merkt und den Transfer abbricht und später wieder versucht. Hoffe ihr könnt mir helfen ?

Vielen Dank !

Thomas

Re: FTPlib und Verbindungsausfälle

Verfasst: Freitag 3. Februar 2012, 10:14
von snafu
Seit Python 2.6 kannst du ftplib.FTP() doch ein Timeout mitgeben. Das dürfte genau das sein, was du suchst:
The optional timeout parameter specifies a timeout in seconds for blocking operations like the connection attempt (if is not specified, the global default timeout setting will be used).
Zum Wiederaufnehmen des Transfers (ab Python 2.7) im Groben:

Code: Alles auswählen

deine_ftpsession.retrbinary('RETR ' + dateiname, callback, rest=os.path.getsize(pfad_zu_lokaler_datei))
Du kannst nämlich optional ein Offset in Bytes mitgeben, von wo aus der Transfer weitergehen soll. Würde ich natürlich mit `os.path.exists()` kombinieren, um zu prüfen, ob schon eine Datei lokal bei dir existiert. Und natürlich `ftplib.error_reply` abfangen, was geworfen wird, wenn der Server das Offset-Argument nicht versteht. In dem Fall müsste die Übertragung halt trotzdem bei Null begonnen werden.

Re: FTPlib und Verbindungsausfälle

Verfasst: Freitag 3. Februar 2012, 12:24
von koetom
Danke, manchmal sieht man den Wald vor lauter Bäumen nicht. :oops: