没有互联网连接时停止python脚本中止

时间:2018-09-19 05:35:01

标签: python azure-iot-hub pymodbus3 pymodbus

我在使用Azure IOT SDK的revPi上运行python脚本。该脚本基本上从.json文件接受一堆modbus寄存器,添加一些属性,然后将其发送到Azure IOT集线器进行分析。

该脚本当前过于依赖网络连接,并且由于基础架构的限制,连接性不可靠,并且经常导致该脚本频繁死/中止。如何使脚本在互联网连接不畅的情况下起作用?使用的主要库是pymodbus和iothub_client。

1 个答案:

答案 0 :(得分:1)

根据Checking network connection,我建议像这样;

   import urllib2

    if(internet_on())
        CallFunction()
    else
        internet_on()

    def internet_on():
        try:
            urllib2.urlopen('http://216.58.192.142', timeout=1)
            return True
        except urllib2.URLError as err: 
            return False

“ 216.58.192.142”是一个Google地址,但是您可以使用诸如Azure之类的可靠数据,因为这是您发送数据的地方。

使用while循环或添加线程睡眠以使其停止检查更为明智。

希望这会有所帮助。