首页 文章

python脚本在树莓派3上被阻止

提问于
浏览
1

我在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,操作系统是Raspbian .

经过几次测试:

  • 大部分时间凌晨2点(格林威治标准时间2)出现问题(互联网服务提供商更新?)

  • 我通过集线器将覆盆子连接到互联网 . 如果我从集线器上拔下树莓 . 没有问题,脚本在几秒钟后引发异常 . 但如果我从互联网上拔下集线器 . 脚本保持停止(对于操作系统,它始终连接到互联网) .

1 回答

  • 1

    看起来当没有给 urlopen 超时时它永远不会超时(参见here) . 如果你给出一个应该解决问题的超时 .

    response = urllib.request.urlopen(req, timeout=20)
    

    在sidenode上:最好是捕获特定的异常,而不是全部,例如你也会发现ZeroDivisionError之类的东西,你不想去那里 .

相关问题