如何为python的机械化设置超时值?
答案 0 :(得分:13)
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()
答案 1 :(得分:3)
如果您使用的是Python 2.6或更高版本,以及mechanize
的相应更新版本,mechanize.urlopen
应该接受timeout=...
可选参数,这似乎是您正在寻找的
答案 2 :(得分:1)
我相信
的内容mechanize._sockettimeout._GLOBAL_DEFAULT_TIMEOUT = 100
将覆盖Mechanize使用的默认值。