Daily Archives: 2011-03-06

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]

Posted in Python | Tagged , , | Leave a comment