Остановите прерывание сценария Python при отсутствии подключения к Интернету - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть скрипт Python, работающий на RevPi, который использует Azure IOT SDK.Сценарий в основном принимает набор регистров Modbus из файла .json, добавляет несколько свойств и отправляет их в концентратор Azure IOT для анализа.

Сценарий в настоящее время слишком зависит от сетевого подключения, и из-за ограничений инфраструктуры подключение ненадежно и часто приводит к частому отключению / прерыванию работы сценария.Как я могу заставить скрипт работать на этом плохом интернет-соединении?Основными используемыми библиотеками являются pymodbus и iothub_client.

1 Ответ

0 голосов
/ 19 сентября 2018

Согласно Проверка сетевого подключения Я бы предложил что-то вроде этого;

   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 или добавить спящий поток, чтобы прекратить его частую проверку.

Надеюсь, это поможет.

...