Python 3.x 测试python3的internet连接

Python 3.x 测试python3的internet连接,python-3.x,networking,Python 3.x,Networking,如何检查python3模块是否连接到internet 我看到这是针对Python2的,我想做一些类似的事情。下面的代码片段对我很有用 from urllib.request import urlopen def internet_on(): try: response = urlopen('https://www.google.com/', timeout=10) return True except: return False

如何检查python3模块是否连接到internet


我看到这是针对Python2的,我想做一些类似的事情。

下面的代码片段对我很有用

from urllib.request import urlopen

def internet_on():
   try:
        response = urlopen('https://www.google.com/', timeout=10)
        return True
    except: 
        return False

其他用例可能需要改进错误处理和/或其他配置。

以下代码片段对我很有用

from urllib.request import urlopen

def internet_on():
   try:
        response = urlopen('https://www.google.com/', timeout=10)
        return True
    except: 
        return False

对于其他用例,可能需要改进错误处理和/或其他配置。

如果主机名处于联机状态,您还可以仅检查主机名: (有用的是url是API,需要POST而不是GET)


您也只能在以下情况下检查主机名: (有用的是url是API,需要POST而不是GET)

这是我的代码:

response = urlopen('https://www.google.com/', timeout=10)
print(response)
<http.client.HTTPResponse object at 0x0000024E196C9CC0>
response=urlopen('https://www.google.com/,超时=10)
打印(答复)
所以

导入系统 从urllib.request导入urlopen 响应=urlopen('https://www.google.com/,超时=10) 如果响应==“”: 打印(“确定!”) 其他: 打印(“否!!!”) 我能做什么?

这是我的代码:

response = urlopen('https://www.google.com/', timeout=10)
print(response)
<http.client.HTTPResponse object at 0x0000024E196C9CC0>
response=urlopen('https://www.google.com/,超时=10)
打印(答复)
所以

导入系统 从urllib.request导入urlopen 响应=urlopen('https://www.google.com/,超时=10) 如果响应==“”: 打印(“确定!”) 其他: 打印(“否!!!”)
我能做什么?

这是给蟒蛇3的。我现在用这个有一段时间了

导入套接字,时间
mem1=0
尽管如此:
尝试:
host=socket.gethostbyname(“www.google.com”)#更改为个人选择网站
s=套接字。创建_连接((主机,80),2)
s、 关闭()
mem2=1
如果(mem2==mem1):
通过#在每次检查时添加要执行的命令
其他:
mem1=mem2
打印(“互联网正在运行”)#将在状态更改时执行
例外情况除外,如e:
mem2=0
如果(mem2==mem1):
通过
其他:
mem1=mem2
打印(“互联网关闭”)
时间。睡眠(10)#检查时间间隔

这是为python3设计的。我现在用这个有一段时间了

导入套接字,时间
mem1=0
尽管如此:
尝试:
host=socket.gethostbyname(“www.google.com”)#更改为个人选择网站
s=套接字。创建_连接((主机,80),2)
s、 关闭()
mem2=1
如果(mem2==mem1):
通过#在每次检查时添加要执行的命令
其他:
mem1=mem2
打印(“互联网正在运行”)#将在状态更改时执行
例外情况除外,如e:
mem2=0
如果(mem2==mem1):
通过
其他:
mem1=mem2
打印(“互联网关闭”)
时间。睡眠(10)#检查时间间隔

我们使用以下代码测试internet连接。在这里,generate_204将在连接internet或给出错误时生成代码204

import requests

url = 'http://clients3.google.com/generate_204'

try:
    response = requests.get(url, timeout=5)
    if response.status_code == 204:
        print(response.status_code)
        response.raise_for_status()
except requests.exceptions.RequestException as err:
    print("OOps: Something Else", err)
except requests.exceptions.HTTPError as errh:
    print("Http Error:", errh)
except requests.exceptions.ConnectionError as errc:
    print("Error Connecting:", errc)
except requests.exceptions.Timeout as errt:
    print("Timeout Error:", errt)

我们使用以下代码来测试internet连接。在这里,generate_204将在连接internet或给出错误时生成代码204

import requests

url = 'http://clients3.google.com/generate_204'

try:
    response = requests.get(url, timeout=5)
    if response.status_code == 204:
        print(response.status_code)
        response.raise_for_status()
except requests.exceptions.RequestException as err:
    print("OOps: Something Else", err)
except requests.exceptions.HTTPError as errh:
    print("Http Error:", errh)
except requests.exceptions.ConnectionError as errc:
    print("Error Connecting:", errc)
except requests.exceptions.Timeout as errt:
    print("Timeout Error:", errt)

可能重复的可能重复的好工作管理找到解决方案工作中的代码链接的问题。您是否尝试在接受的答案(或其他一些答案)中运行代码?他们还应该能够在Python3中成功运行(尽管我很感激问题中提供的代码不会运行)。然而,我正在寻找一个urllib2等价物,因为我发现它更整洁。令人尴尬的是,这也被贴在了原来的帖子上(!)。我错过了它,因为我搜索了python3这个词(没有用)。我应该删除这篇文章吗?你可以,但最好是接受建议的副本(你应该看到一个黄色对话框,在你的问题旁边显示有建议的副本,按钮是“是,这回答了我的问题”或类似的内容)。这样,具有相同问题的未来用户可以将此作为找到问题的标志solution@SamMurphy是否有其他方法检查internet运行状态。因为如果你再打电话给google.com,他们就会封锁我们的IP。那么还有其他方法吗?@Sanjiv这取决于你需要多久检查一次互联网连接是否正常工作。我在一个个人项目上使用它(这样就不会被谷歌屏蔽),但是你可能已经或者想要扩展到很多用户。在这种情况下,您可能应该设置自己的服务器。最简单的方法是使用netlify或heroku这样的服务(它们都有免费的层)。然后你可以ping这个url,而不是google.com。很好地找到了一个解决方案,解决了链接问题中的代码。您是否尝试在接受的答案(或其他一些答案)中运行代码?他们还应该能够在Python3中成功运行(尽管我很感激问题中提供的代码不会运行)。然而,我正在寻找一个urllib2等价物,因为我发现它更整洁。令人尴尬的是,这也被贴在了原来的帖子上(!)。我错过了它,因为我搜索了python3这个词(没有用)。我应该删除这篇文章吗?你可以,但最好是接受建议的副本(你应该看到一个黄色对话框,在你的问题旁边显示有建议的副本,按钮是“是,这回答了我的问题”或类似的内容)。这样,具有相同问题的未来用户可以将此作为找到问题的标志solution@SamMurphy是否有其他方法检查internet运行状态。因为如果你再打电话给google.com,他们就会封锁我们的IP。那么还有其他方法吗?@Sanjiv这取决于你需要多久检查一次互联网连接是否正常工作。我在一个个人项目上使用它(这样就不会被谷歌屏蔽了),但你没有