【发布时间】:2011-04-02 22:45:41
【问题描述】:
如何为python的机械化设置超时值?
【问题讨论】:
如何为python的机械化设置超时值?
【问题讨论】:
Alex 是正确的:mechanize.urlopen 接受 timeout 参数。因此,只需插入多个seconds in floating point: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()
【讨论】:
br.open() 看起来也有一个超时参数:github.com/jjlee/mechanize/blob/…
如果您使用的是 Python 2.6 或更高版本,以及相应更新的 mechanize 版本,mechanize.urlopen 应该接受 timeout=... 可选参数,这似乎是您正在寻找的。p>
【讨论】:
我相信类似于
mechanize._sockettimeout._GLOBAL_DEFAULT_TIMEOUT = 100
将覆盖 Mechanize 使用的默认值。
【讨论】: