From 9af773d5eea95d5f3c5de036f7241f86693ae8c4 Mon Sep 17 00:00:00 2001 From: NaruX Date: Sun, 18 Aug 2019 12:13:30 +0200 Subject: [PATCH] =?UTF-8?q?Fehler=20bei=20Hashwerte=20bei=20Dateien=20beho?= =?UTF-8?q?ben=20Neuanordnugn=20f=C3=BCr=20Reload=20der=20Dienste=20bei=20?= =?UTF-8?q?Datei=C3=A4nderungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- revpipyload/revpipyload.py | 61 +++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 31 deletions(-) diff --git a/revpipyload/revpipyload.py b/revpipyload/revpipyload.py index 4f165c8..544e5dd 100755 --- a/revpipyload/revpipyload.py +++ b/revpipyload/revpipyload.py @@ -605,7 +605,7 @@ class RevPiPyLoad(): self.pictorymtime = mtime with open(proginit.pargs.configrsc, "rb") as fh: - file_hash = md5(fh.read()) + file_hash = md5(fh.read()).hexdigest() if self.pictoryhash == file_hash: return False self.pictoryhash = file_hash @@ -639,7 +639,7 @@ class RevPiPyLoad(): self.replaceiosmtime = mtime with open(self.replace_ios_config, "rb") as fh: - file_hash = md5(fh.read()) + file_hash = md5(fh.read()).hexdigest() if self.replaceiohash == file_hash: return False self.replaceiohash = file_hash @@ -721,14 +721,37 @@ class RevPiPyLoad(): self.plc.start() # mainloop - file_changed = False while not self._exit: + file_changed = False # Neue Konfiguration laden if self.evt_loadconfig.is_set(): proginit.logger.info("got reqeust to reload config") self._loadconfig() + # Dateiveränderungen prüfen mit beiden Funktionen! + if self.check_pictory_changed(): + file_changed = True + proginit.logger.warning("piCtory configuration was changed") + if self.check_replace_ios_changed(): + file_changed = True + proginit.logger.warning("replace ios file was changed") + if file_changed: + # Auf Dateiveränderung reagieren + + # MQTT Publisher neu laden + if self.mqtt and self.th_plcmqtt is not None: + self.th_plcmqtt.reload_revpimodio() + + # ProcImgServer anhalten zum neu laden + self.stop_plcslave() + + # XML Prozessabbildserver neu laden + if self.xml_ps is not None: + self.xml_psstop() + self.xml_ps.loadrevpimodio() + # Kein psstart um Reload im Client zu erzeugen + # MQTT Publisher Thread prüfen if self.mqtt and self.th_plcmqtt is not None \ and not self.th_plcmqtt.is_alive(): @@ -742,38 +765,14 @@ class RevPiPyLoad(): # PLC Server Thread prüfen if self.plcslave and self.th_plcslave is not None \ and not self.th_plcslave.is_alive(): - proginit.logger.warning( - "restart plc slave after thread was not running" - ) + if not file_changed: + proginit.logger.warning( + "restart plc slave after thread was not running" + ) self.th_plcslave = self._plcslave() if self.th_plcslave is not None: self.th_plcslave.start() - # Dateiveränderungen prüfen mit beiden Funktionen! - if self.check_pictory_changed(): - file_changed = True - proginit.logger.warning("piCtory configuration was changed") - if self.check_replace_ios_changed(): - file_changed = True - proginit.logger.warning("replace ios file was changed") - if file_changed: - file_changed = False - - # Auf Dateiveränderung reagieren - - # MQTT Publisher neu laden - if self.mqtt and self.th_plcmqtt is not None: - self.th_plcmqtt.reload_revpimodio() - - # FIXME: ProcImgServer muss alle Verbindungen vernichten - # NOTE: RevPiNetIO müsste bei Neuverbindung Hashs abfragen - - # XML Prozessabbildserver neu laden - if self.xml_ps is not None: - self.xml_psstop() - self.xml_ps.loadrevpimodio() - # Kein psstart um Reload im Client zu erzeugen - self.evt_loadconfig.wait(1) proginit.logger.info("stopping revpipyload")