Остановите прерывание сценария Python при отсутствии подключения к Интернету

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

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

1 ответ

Решение

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

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

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

Другие вопросы по тегам