我尝试了python请求库文档中提供的示例:
http://docs.python-requests.org/en/latest/user/advanced/#asynchronous-requests
与async.map(rs)
我得到的响应代码,但我想请求每一页的内容.
out = async.map(rs)
print out[0].content
Run Code Online (Sandbox Code Playgroud)
例如,只是不工作.
对于我的项目,我必须检查网站的状态(在共享主机上)。
我使用Python请求库。
def getStatusCode(url):
try:
return requests.head(url,timeout=0.3).status_code
except:
return -1
Run Code Online (Sandbox Code Playgroud)
此代码在MacOS 10.10和Python3.4(带有类似http://www.google.com的网址)下的效果很好。如果拔下ISP电缆,则会立即出现异常。
在具有Python3.4的Ubuntu Server 14.04下,如果拔下ISP电缆,则永远不会收到超时错误。Raspbian上的同样问题。
经过一些测试,如果我用IP http://216.58.212.100替换了URL ,Ubuntu Server会给我一个例外,但是由于我位于共享的Web托管上,所以我不能使用IP。
经过一番研究,我发现请求库中的超时与DNS查找之间没有区别,不是由它执行而是由操作系统执行。
所以我的问题是解决这个问题的最美丽的方法是什么?我是否需要在Python中添加额外的超时异常,例如:函数调用超时
谢谢