Come implementare un controllo per urlllib2.urlopen in Python? Voglio solo monitorare che se in 5 secondi non vengono restituiti dati xml, tagliare questa connessione e riconnettersi? Dovrei usare un timer? thxCome implementare un controllo di timeout per urlllib2.urlopen
risposta
urllib2.urlopen("http://www.example.com", timeout=5)
Dal urllib2
documentation ...
Il parametro timeout opzionale specifica un timeout in secondi per operazioni di blocco, come il tentativo di connessione (se non specificato, verrà utilizzata l'impostazione di timeout globale predefinito). In realtà funziona solo con lo per le connessioni HTTP, HTTPS e FTP.
E se si vuole intercettare l'eccezione, è necessario prendere tutte queste .. 'ssl.SSLError',' urllib2.URLError', 'socket.timeout',' socket.error '(forse non ho incluso tutto). Alcuni dei quali non saranno sempre a causa di timeout, ma è possibile ispezionare l'istanza di eccezione in determinati modi per scoprirlo, e ribattere se non lo è. – GP89
grazie mille. – user2263305
questo farà sì che i dati xml vengano recuperati ogni 5 secondi? – user2263305
Assolutamente no. Proverà a recuperare i dati fino alla scadenza di 5 secondi – Yarkee
quando aggiungo il parametro di timeout, lo script python recupera solo i dati ogni 3/5 secondi. Ma quando non uso il timeout, recupera i dati 1-5 volte al secondo. Cosa sta succedendo? grazie – user2263305