【发布时间】:2014-01-21 16:46:44
【问题描述】:
我有以下代码来检查是否存在互联网连接。
import urllib2
def internet_on():
try:
response=urllib2.urlopen('http://74.125.228.100',timeout=20)
return True
except urllib2.URLError as err: pass
return False
这将测试互联网连接,但效果如何?
我知道互联网的质量因人而异,所以我正在寻找对广谱最有效的东西,上面的代码似乎存在人们可以找到错误的漏洞。例如,如果某人的连接速度非常慢,并且响应时间超过 20 秒。
【问题讨论】:
-
为什么?正如所问的,这听起来像是“在跳跃之前先看”的简单示例。更好的方法通常是“请求宽恕比许可容易”。如果您解释您要完成的工作,您可能会得到更好的答案。
-
@Jean-PaulCalderone 在我的程序开始执行一些将更新系统的任务之前,我正在尝试确保用户有互联网连接。比如从镜像下载包,然后安装。
-
你为什么不试试下载那些包呢?如果与镜像的连接尝试超时,那么您可以向用户报告超时。用户将非常更喜欢这种体验,而不是您尝试检测他们的网络是否正常工作的错误尝试。
标签: python python-2.7 networking