Остановите прерывание сценария 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 или добавить сон потока, чтобы прекратить его проверку так часто.
Надеюсь это поможет.