Python: Control timeout-Länge
Habe ich einen ähnlichen code wie den folgenden ausführen, in einem script:
try:
s = ftplib.FTP('xxx.xxx.xxx.xxx','username','password')
except:
print ('Could not contact FTP serer')
sys.exit()
WENN die FTP-site nicht verfügbar ist, das Skript scheint zu 'hängen' ... Es dauert etwa 75 Sekunden im Durchschnitt, bevor sys.exit() wird aufgerufen werden... ich weiß, das 75 Sekunden ist wahrscheinlich sehr subjektiv und abhängig vom system, das läuft auf...aber es ist ein Weg, um python-probieren Sie dies einmal, und wenn unsucessful, sich sofort zu beenden? Die Plattform, die ich benutze für diese ist Mac OS X 10.5/python-2.5.1.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beginnend mit 2.6, die
FTP-constructor
hat eine optionaletimeout
parameter:Beginnend mit version 2.3 und höher, der Globale Standardwert für das Zeitlimit genutzt werden kann:
da Sie auf python 2.5 können Sie ein globales Zeitlimit für alle socket-Operationen (einschließlich FTP-Anfragen) durch den Einsatz von:
(dies wurde in Python 2.3)
http://docs.python.org/library/socket.html#socket.socket.settimeout
wenn man sich die doc, gibt es einen timeout-parameter.
class ftplib.FTP([host[, user[, passwd[, acct[, timeout]]]]])¶
vielleicht können Sie diese verwenden.
Einen Kommentar auf diejenigen, die darauf hindeutet, mit " - Buchse.setdefaulttimeout()'. Intern, ftplib macht sich Socke.makefile(). Nach der python-docs, die sollte man nicht mischen makefile() mit timeouts. Speziell:
http://docs.python.org/library/socket.html#socket.socket.makefile
Natürlich, ich kann nicht sagen, dass ich gesehen habe keine Probleme, es ist nur so, dass es mir sorgen macht.