覆盖在覆盆子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,你不想在那里捕捉。

+0

好的,谢谢,但为什么在拔掉树莓时出现异常,而不是在集线器与互联网断开连接时出现异常? –

+0

拔掉树莓时,操作系统尝试启动互联网连接时会发出错误。当只有集线器被拔出时,看起来好像不会中断连接,操作系统认为一切正常。 – syntonym