Как установить значение тайм-аута для механизации Python? - PullRequest
15 голосов
/ 24 августа 2010

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

Ответы [ 3 ]

13 голосов
/ 24 августа 2010

Алекс прав: 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()
3 голосов
/ 24 августа 2010

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

1 голос
/ 16 марта 2014

Полагаю, что-то вроде

mechanize._sockettimeout._GLOBAL_DEFAULT_TIMEOUT = 100

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

...