Come si imposta un valore di timeout per la meccanizzazione di python?come posso impostare un valore di timeout per la meccanizzazione di python?
14
A
risposta
13
Alex è corretto: mechanize.urlopen
prende un argomento timeout
. Pertanto, è sufficiente inserire un numero di seconds in floating point: mechanize.urlopen('http://url/', timeout=30.0)
.
Lo sfondo, dalla sorgente di mechanize.urlopen
:
def urlopen(url, data=None, timeout=_sockettimeout._GLOBAL_DEFAULT_TIMEOUT):
...
return _opener.open(url, data, timeout)
cosa è mechanize._sockettimeout._GLOBAL_DEFAULT_TIMEOUT
si chiede? Sono solo le impostazioni del modulo socket
.
import socket
try:
_GLOBAL_DEFAULT_TIMEOUT = socket._GLOBAL_DEFAULT_TIMEOUT
except AttributeError:
_GLOBAL_DEFAULT_TIMEOUT = object()
3
Se stai usando Python 2.6 o superiore, e una versione aggiornata di conseguenza mechanize
, mechanize.urlopen
dovrebbe accettare un argomento opzionale timeout=...
che sembra essere quello che stai cercando.
1
credo che qualcosa lungo le linee di
mechanize._sockettimeout._GLOBAL_DEFAULT_TIMEOUT = 100
avrà la precedenza sul valore predefinito Mechanize utilizza.
buon vecchio 'br.open()' sembra avere un parametro di timeout pure: https://github.com/jjlee/mechanize/blob/b1d786906946f0193051920a7c716b339bd7bf95/mechanize/_mechanize.py#L200 – Mikeumus