Wpis z mikrobloga

Mam mały problem z Pythonem, dokładniej z pymodbusem.

Mam funkcję pobierającą dane z outputów z określonych portów. Zwykle powinna ona pobierać wartość True albo False, niestety jeśli idzie zbyt dużo zapytań wtedy potrafi walnąć None'm. Jaki jest najlepszy sposób by funkcja nie zwracała tego None'a?

Mój obecny kod:

class Moxa(object)
    def __init__ (...)


    def get_value(self):
        rr = self.client.read_coils(self.attr_port, 1).bits[0]
        if rr is True:
            return self.status_on
        elif rr is False:
            return self.status_off
        elif rr is None:
            self.get_value()

próbowałem dać też try / except None ale też nie pomogło. Będę wdzięczny za wszelkie uwagi!

#python #programowanie
  • 2
@Dyzajash: A w rr może się pojawić coś innego niż True/False/None? Do tego robisz sobie tu rekurencję jakąś podejrzaną. Z get_value wywołujesz get_value. W krytycznym przypadku może to kiepsko wyjść…
Generalnie jakiś podejrzany ten kod.
@morsik: Nie. Zwraca tylko True/False/None. Problem z pymodbusem jest taki że na np. 10 zapytań ok. 2-3 jest Nonem bo moxa nie wyrobi i nie odpowie. Dlatego ponowne wywołanie tej funkcji 'po części' fixuje ten problem.