在Python 2.6之前的版本中,urllib2.urlopen()的超时

rub*_*eet 28 python urllib2 urlopen

urllib2的文件说,超时参数是在Python 2.6增加.不幸的是,我的代码库已经在Python 2.5和2.4平台上运行.

有没有其他方法来模拟超时?我想要做的就是让代码在一段固定的时间内与远程服务器通话.

也许任何替代内置库?(不要像pycurl那样安装第三方)

Cor*_*erg 57

您可以使用以下命令为所有套接字操作(包括HTTP请求)设置全局超时:

socket.setdefaulttimeout()

像这样:

import urllib2
import socket
socket.setdefaulttimeout(30)
f = urllib2.urlopen('http://www.python.org/')
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您的urllib2请求将在30秒后超时并抛出套接字异常.(这是在Python 2.3中添加的)