Jak odświeżyć odczyt danych z pliku json, odczyt zawiesza się po kilku godzinach pracy.

0

Mam program w python który ma za zadanie całodobowo odczytywać z dwóch różnych urządzeń raspberry pi4 generowany co minutę plik json z danymi. Problem polega na tym że po kilku godzinach pracy odczyt się zawiesza. Dane z json wyglądają następująco:

{"data_dzieci": "10.08.2021", "godzina": "07:35", "temperatura_dzieci": 24.1, "jakosc_dzieci": 13, "cisnienie_dzieci": 993.0, "wilgotnosc_dzieci": 62.6, "kolor_tla_dzieci": "green", "kolor_dlugopisu_dzieci": "black"}

Zaś definicja odczytująca te dane wygląda tak:

def sypialnia_pokoj(self):
        self.r = requests.get("http://192.168.1.32/info_sypialnia_json.json")
        task = self.r.json()

        self.dataSypialnia.set(task["data_sypialnia"])
        self.godzinaSypialnia.set(task["godzina_sypialnia"])
        self.temperaturaSypialnia.set(task["temperatura_sypialnia"])
        self.cisnienieSypialnia.set(task["cisnienie_sypialnia"])
        self.wilgotnoscSypialnia.set(task["wilgotnosc_sypialnia"])
        self.window.after(1000, self.sypialnia_pokoj)

Czym to jest spowodowane, gdzie szukać problemu?

3

A gdzie się zawiesza? Może jest jakiś deadlock, że "ty" i jakiś proces z maliny próbują dostać dostęp do tego samego pliku?

0

Program zawiesza odczyt danych po kilku godzinach pracy, przez pierwsze godziny (powiedzmy 9 godzin) jest ok dane są odczytywane na bieżąco potem jeden z odczytów staje w miejscu i pokazuje odczyt z przed kilku godzin, drugi odczyt z drugiego urządzenia jest nadal odczytywany na bieżąco. Kiedy wchodzę ręcznie przez przeglądarkę w json na tym pierwszym urządzeniu widać że wszystko działa poprawnie. Problem tkwi po stronie urządzenia odczytującego.

W tej chwili zmieniłem częstotliwość odczytu z sekundy na 30 sekund może to naprawi odczyt.

1

A wiesz gdzie wisi? Na jakiej linii? Możesz ustawić jakiś timeout i żeby nie czekał w nieskończoność tylko po jakimś czasie zrywał połączenie i próbował ponownie.

0

Nie wiem gdzie się wiesza, ale dzięki za podpowiedź, spróbuje z tym timeout. :)

0

A nie jest tak przypadkiem, że to raspbery Ci się wiesza po tych kilku h?

1 użytkowników online, w tym zalogowanych: 0, gości: 1