urllib2.urlopen超时的问题

urlopen方法在Python 2.6之前是没有timeout参数的,只能通过全局的socket超时设置,2.6之后增加了timeoute参数。

我在Mac下使用自带的Python 2.6的urlopen,没有设置timeout参数,结果在网络环境不好的情况下,时常出现read()方法没有任何反应的问题,程序卡死在read()方法里,搞了大半天,才找到问题,给urlopen加上timeout就ok了,设置了timeout之后超时之后read超时的时候会抛出socket.timeout异常

不知道其它版本有没有这个问题,还只是2.6的问题

想要程序稳定还需要给urlopen加上异常处理,再加上出现异常重试,程序就完美了。

代码:

[python]
fails = 0
while True:
try:
if fails >= 3:
break
f = urllib2.urlopen(url,timeout=20)
page = f.read().decode(‘gbk’)
except:
fails += 1
else:
break
[/python]

This entry was posted in Python and tagged , , . Bookmark the permalink.

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>