覆盖在覆盆子pi上的python脚本3
问题描述:
我对覆盆子pi3上的python脚本有一些问题。覆盖在覆盆子pi上的python脚本3
我发送一个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。
并经过几次试验:
-The问题似乎大部分时间在凌晨2点(GMT + 2)(互联网服务提供商的更新?)
-I通过树莓连接到互联网一个集线器。如果我从枢纽拔掉树莓。没有问题,脚本几秒钟后引发异常。但是如果我从互联网上拔掉hub。脚本停留(对于操作系统,它始终连接到互联网)。
答
看起来像没有超时给urlopen
它永远不会超时(见here)。如果你给超时应该解决你的问题。
response = urllib.request.urlopen(req, timeout=20)
在sidenode上:最好是捕获特定的异常而不是所有的异常,你也会看到ZeroDivisionError,你不想在那里捕捉。
好的,谢谢,但为什么在拔掉树莓时出现异常,而不是在集线器与互联网断开连接时出现异常? –
拔掉树莓时,操作系统尝试启动互联网连接时会发出错误。当只有集线器被拔出时,看起来好像不会中断连接,操作系统认为一切正常。 – syntonym