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

Stop python script aborting when there is no internet connection

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

该脚本目前过于依赖网络连接,并且由于基础设施的限制,连接不可靠并且经常导致脚本经常 die/abort。我怎样才能让脚本在这种糟糕的互联网连接上运行?使用的主要库是 pymodbus 和 iothub_client。

根据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 循环或添加线程休眠以停止它如此频繁地检查可能更明智。

希望对您有所帮助。