如何为Python的mechanize设置超时值?
我该如何为Python的mechanize设置超时时间?
3 个回答
1
我认为像下面这样的代码
mechanize._sockettimeout._GLOBAL_DEFAULT_TIMEOUT = 100
会覆盖Mechanize默认使用的值。
3
如果你使用的是Python 2.6或更高版本,并且相应更新了mechanize
库,那么mechanize.urlopen
这个函数应该可以接受一个叫timeout=...
的可选参数,这正是你需要的功能。
13
Alex说得对: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()