From 63721882054b7e537cfc342bc2bf303646ac75c7 Mon Sep 17 00:00:00 2001 From: NaruX Date: Mon, 19 Aug 2019 16:40:18 +0200 Subject: [PATCH] =?UTF-8?q?Bei=20=C3=84nderung=20der=20Configuration=20nur?= =?UTF-8?q?=20die=20PLC-Slave-Verbindungen=20trennen=20Accept=20Timeout=20?= =?UTF-8?q?auf=202=20Sekunden=20festgelegt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/picontrolserver.html | 9 +++++++++ eric-revpipyload.api | 1 + revpipyload/picontrolserver.py | 11 ++++++++++- revpipyload/revpipyload.py | 4 ++-- 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/doc/picontrolserver.html b/doc/picontrolserver.html index f00c03f..62b049c 100644 --- a/doc/picontrolserver.html +++ b/doc/picontrolserver.html @@ -66,6 +66,9 @@ Methods check_connectedacl Prueft bei neuen ACLs bestehende Verbindungen. +disconnect_all +Close all device connection. + newlogfile Konfiguriert die FileHandler auf neue Logdatei. @@ -104,6 +107,12 @@ RevPiSlave.check_connectedacl check_connectedacl()

Prueft bei neuen ACLs bestehende Verbindungen. +

+

+RevPiSlave.disconnect_all

+disconnect_all() +

+Close all device connection.

RevPiSlave.newlogfile

diff --git a/eric-revpipyload.api b/eric-revpipyload.api index 2d43877..87afb45 100644 --- a/eric-revpipyload.api +++ b/eric-revpipyload.api @@ -33,6 +33,7 @@ mqttserver.__author__?9 mqttserver.__copyright__?9 mqttserver.__license__?9 picontrolserver.RevPiSlave.check_connectedacl?4() +picontrolserver.RevPiSlave.disconnect_all?4() picontrolserver.RevPiSlave.newlogfile?4() picontrolserver.RevPiSlave.run?4() picontrolserver.RevPiSlave.stop?4() diff --git a/revpipyload/picontrolserver.py b/revpipyload/picontrolserver.py index ee91af0..1a2caaa 100644 --- a/revpipyload/picontrolserver.py +++ b/revpipyload/picontrolserver.py @@ -70,6 +70,12 @@ class RevPiSlave(Thread): ) dev._acl = level + def disconnect_all(self): + """Close all device connection.""" + # Alle Threads beenden + for th in self._th_dev: + th.stop() + def newlogfile(self): """Konfiguriert die FileHandler auf neue Logdatei.""" pass @@ -80,6 +86,7 @@ class RevPiSlave(Thread): # Socket öffnen und konfigurieren bis Erfolg oder Ende self.so = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self.so.settimeout(2) while not self._evt_exit.is_set(): try: self.so.bind((self._bindip, self._port)) @@ -97,9 +104,11 @@ class RevPiSlave(Thread): self.exitcode = -1 # Verbindung annehmen - proginit.logger.info("accept new connection for revpinetio") try: tup_sock = self.so.accept() + proginit.logger.info("accepted new connection for revpinetio") + except socket.timeout: + continue except Exception: if not self._evt_exit.is_set(): proginit.logger.exception("accept exception") diff --git a/revpipyload/revpipyload.py b/revpipyload/revpipyload.py index a6058a1..1966b34 100755 --- a/revpipyload/revpipyload.py +++ b/revpipyload/revpipyload.py @@ -750,8 +750,8 @@ class RevPiPyLoad(): if self.mqtt and self.th_plcmqtt is not None: self.th_plcmqtt.reload_revpimodio() - # ProcImgServer anhalten zum neu laden - self.stop_plcslave() + # Alle Verbindungen von ProcImgServer trennen + self.th_plcslave.disconnect_all() # XML Prozessabbildserver neu laden if self.xml_ps is not None: