Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 1, 2017 11:25:32

Alex_2057
Зарегистрирован: 2016-02-15
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Выход по таймауту

Здравствуйте!
В скрипте происходит чтение параметров датчика:
data = read_word(BMP280) # это из библиотеки smbus
Если датчик через какое-то время не отвечает (отвалился), тут все виснет.
Сейчас решаю это так: параллельно запускается еще один скрипт - watchdog, который контролирует завершение первого скрипта, и если он не завершился через какое-то время, просто “убивает” его.
На мой взгляд это очень коряво. Тем более датчиков очень много и придется “сторожить” каждого.
В поисковиках нашел предложение использовать subprocess с параметром timeout. Но не понял, как это будет выглядеть в моем случае. Прошу пример кода.
Спасибо.

Офлайн

#2 Сен. 1, 2017 12:45:32

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Выход по таймауту

Popen.wait() ?
https://pythonworld.ru/moduli/modul-subprocess.html
лучше asyncio, gevent если много процесcов
https://tproger.ru/translations/asynchronous-programming-in-python/

Отредактировано vic57 (Сен. 1, 2017 12:58:31)

Офлайн

#3 Сен. 1, 2017 13:01:07

Alex_2057
Зарегистрирован: 2016-02-15
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Выход по таймауту

Так как на каждый датчик или группу выполняется один скрипт, попробую через subprocess.
Буду разбираться.
Спасибо.

Офлайн

#4 Сен. 1, 2017 13:36:45

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Выход по таймауту

тут похожая задачка

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version