Bei Änderung der Configuration nur die PLC-Slave-Verbindungen trennen

Accept Timeout auf 2 Sekunden festgelegt
This commit is contained in:
2019-08-19 16:40:18 +02:00
parent 2b96abce66
commit 6372188205
4 changed files with 22 additions and 3 deletions

View File

@@ -66,6 +66,9 @@ Methods</h3>
<td><a style="color:#0000FF" href="#RevPiSlave.check_connectedacl">check_connectedacl</a></td>
<td>Prueft bei neuen ACLs bestehende Verbindungen.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#RevPiSlave.disconnect_all">disconnect_all</a></td>
<td>Close all device connection.</td>
</tr><tr>
<td><a style="color:#0000FF" href="#RevPiSlave.newlogfile">newlogfile</a></td>
<td>Konfiguriert die FileHandler auf neue Logdatei.</td>
</tr><tr>
@@ -104,6 +107,12 @@ RevPiSlave.check_connectedacl</h3>
<b>check_connectedacl</b>(<i></i>)
<p>
Prueft bei neuen ACLs bestehende Verbindungen.
</p><a NAME="RevPiSlave.disconnect_all" ID="RevPiSlave.disconnect_all"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiSlave.disconnect_all</h3>
<b>disconnect_all</b>(<i></i>)
<p>
Close all device connection.
</p><a NAME="RevPiSlave.newlogfile" ID="RevPiSlave.newlogfile"></a>
<h3 style="background-color:#FFFFFF;color:#FF0000">
RevPiSlave.newlogfile</h3>

View File

@@ -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()

View File

@@ -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")

View File

@@ -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: