Как установить значение тайм-аута для механизации python?

Как установить значение тайм-аута для механизации python?

Ответы

Ответ 1

Алекс прав: mechanize.urlopen принимает аргумент timeout. Поэтому просто вставьте число секунд в плавающей запятой: mechanize.urlopen('http://url/', timeout=30.0).

Фон, из источника mechanize.urlopen:

def urlopen(url, data=None, timeout=_sockettimeout._GLOBAL_DEFAULT_TIMEOUT):
    ...
    return _opener.open(url, data, timeout)

Что вы mechanize._sockettimeout._GLOBAL_DEFAULT_TIMEOUT спрашиваете? Это просто настройка модуля socket.

import socket

try:
    _GLOBAL_DEFAULT_TIMEOUT = socket._GLOBAL_DEFAULT_TIMEOUT
except AttributeError:
    _GLOBAL_DEFAULT_TIMEOUT = object()

Ответ 2

Если вы используете Python 2.6 или лучше, и соответственно обновленную версию mechanize, mechanize.urlopen должен принять необязательный аргумент timeout=..., который, кажется, является тем, что вы ищете.

Ответ 3

Я верю что-то вроде

mechanize._sockettimeout._GLOBAL_DEFAULT_TIMEOUT = 100

будет переопределять значение по умолчанию, которое использует Mechanize.