python 脚本在 raspberry pi 3 上被阻止
python script blocked on raspberry pi 3
我在 raspberry pi3 上的 python 脚本有一些问题。
我发送了一个 http 请求,脚本很少在请求函数上停止并且从不退出。
代码:
params = json.dumps({"toto: tata"}).encode('utf8')
head = {'content-type': 'application/json'}
req = urllib.request.Request('http://www.toto.com', data = params, headers = head)
try:
response = urllib.request.urlopen(req) # <- here the problem
except:
print("TCP_IP: may not connected to the internet")
有关信息,我使用 python3.4,OS 是 Raspbian。
经过几次测试:
-问题大部分时间出现在凌晨2点(GMT+2)(互联网服务提供商的更新?)
-我通过集线器将树莓派连接到互联网。如果我从集线器上拔下覆盆子。没问题,脚本会在几秒钟后引发异常。但是如果我从互联网上拔下集线器。脚本保持停止状态(对于 OS,它始终连接到互联网)。
看起来当没有给 urlopen
超时时,它永远不会超时(参见 )。如果您给出超时应该可以解决您的问题。
response = urllib.request.urlopen(req, timeout=20)
旁节点:捕获特定异常比捕获所有异常更好,例如您还会捕获诸如 ZeroDivisionError 之类的东西,而您不想在那里捕获它。
我在 raspberry pi3 上的 python 脚本有一些问题。
我发送了一个 http 请求,脚本很少在请求函数上停止并且从不退出。
代码:
params = json.dumps({"toto: tata"}).encode('utf8')
head = {'content-type': 'application/json'}
req = urllib.request.Request('http://www.toto.com', data = params, headers = head)
try:
response = urllib.request.urlopen(req) # <- here the problem
except:
print("TCP_IP: may not connected to the internet")
有关信息,我使用 python3.4,OS 是 Raspbian。
经过几次测试:
-问题大部分时间出现在凌晨2点(GMT+2)(互联网服务提供商的更新?)
-我通过集线器将树莓派连接到互联网。如果我从集线器上拔下覆盆子。没问题,脚本会在几秒钟后引发异常。但是如果我从互联网上拔下集线器。脚本保持停止状态(对于 OS,它始终连接到互联网)。
看起来当没有给 urlopen
超时时,它永远不会超时(参见
response = urllib.request.urlopen(req, timeout=20)
旁节点:捕获特定异常比捕获所有异常更好,例如您还会捕获诸如 ZeroDivisionError 之类的东西,而您不想在那里捕获它。