2010-08-24 14 views

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() 
+0

buon vecchio 'br.open()' sembra avere un parametro di timeout pure: https://github.com/jjlee/mechanize/blob/b1d786906946f0193051920a7c716b339bd7bf95/mechanize/_mechanize.py#L200 – Mikeumus

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.

Problemi correlati