From 0bcd1a2b6ed9b7e437ec9b43cd4081935f4cfe67 Mon Sep 17 00:00:00 2001 From: NaruX Date: Sun, 24 Jun 2018 10:42:01 +0200 Subject: [PATCH] Fehler bei deaktiviertem XMLRPC behoben Fehler bei AutoReloadDelay behoben (Zeit passte nicht) ConfigParser mit Typen bei get versehen --- revpipyload.e4p | 4 +-- revpipyload/plcsystem.py | 10 +++---- revpipyload/revpipyload.py | 59 +++++++++++++++++++------------------- setup.py | 2 +- 4 files changed, 37 insertions(+), 38 deletions(-) diff --git a/revpipyload.e4p b/revpipyload.e4p index 2fc0562..a87cbff 100644 --- a/revpipyload.e4p +++ b/revpipyload.e4p @@ -1,7 +1,7 @@ - + en_US @@ -9,7 +9,7 @@ Python3 Console Dieser Loader wird über das Init-System geladen und führt das angegebene Pythonprogramm aus. Es ist für den RevolutionPi gedacht um automatisch das SPS-Programm zu starten. - 0.6.5 + 0.6.6 Sven Sager akira@narux.de diff --git a/revpipyload/plcsystem.py b/revpipyload/plcsystem.py index 8bb778f..fadcf94 100644 --- a/revpipyload/plcsystem.py +++ b/revpipyload/plcsystem.py @@ -41,7 +41,6 @@ class RevPiPlc(Thread): self._procplc = None self._pversion = pversion self.autoreload = False - self.autoreloaddelay = 5 * 2 self.exitcode = None self.gid = 65534 self.uid = 65534 @@ -152,7 +151,7 @@ class RevPiPlc(Thread): self.exitcode = self._procplc.poll() if self.exitcode is not None: - if self._delaycounter == self.autoreloaddelay: + if self._delaycounter == self._autoreloaddelay: if self.exitcode > 0: # PLC Python Programm abgestürzt proginit.logger.error( @@ -178,10 +177,9 @@ class RevPiPlc(Thread): ) if not self._evt_exit.is_set() and self.autoreload: - if self._delaycounter > 0: - self._delaycounter -= 1 - else: - self._delaycounter = self.autoreloaddelay + self._delaycounter -= 1 + if self._delaycounter < 0: + self._delaycounter = self._autoreloaddelay # Prozess neu starten self._procplc = self._spopen(lst_proc) diff --git a/revpipyload/revpipyload.py b/revpipyload/revpipyload.py index fc101a8..7c6b82c 100755 --- a/revpipyload/revpipyload.py +++ b/revpipyload/revpipyload.py @@ -50,7 +50,7 @@ from time import asctime from xmlrpc.client import Binary from xrpcserver import SaveXMLRPCServer -pyloadversion = "0.6.5" +pyloadversion = "0.6.6" class RevPiPyLoad(): @@ -108,11 +108,11 @@ class RevPiPyLoad(): ip = "" elif ip == "": ip = "127.0.0.1" - port = int(self.globalconfig["PLCSLAVE"].get("port", 55234)) + port = self.globalconfig["PLCSLAVE"].getint("port", 55234) return ( self.plcslave != - int(self.globalconfig["PLCSLAVE"].get("plcslave", 0)) + self.globalconfig["PLCSLAVE"].getboolean("plcslave", False) or self.plcslavebindip != ip or self.plcslaveport != port ) @@ -133,13 +133,13 @@ class RevPiPyLoad(): or self.plcarguments != self.globalconfig["DEFAULT"].get("plcarguments", "") or self.plcuid != - int(self.globalconfig["DEFAULT"].get("plcuid", 65534)) + self.globalconfig["DEFAULT"].getint("plcuid", 65534) or self.plcgid != - int(self.globalconfig["DEFAULT"].get("plcgid", 65534)) + self.globalconfig["DEFAULT"].getint("plcgid", 65534) or self.pythonversion != - int(self.globalconfig["DEFAULT"].get("pythonversion", 3)) + self.globalconfig["DEFAULT"].getint("pythonversion", 3) or self.rtlevel != - int(self.globalconfig["DEFAULT"].get("rtlevel", 0)) + self.globalconfig["DEFAULT"].getint("rtlevel", 0) ) def _loadconfig(self): @@ -161,11 +161,11 @@ class RevPiPyLoad(): # Konfiguration verarbeiten [DEFAULT] self.autoreload = \ - int(self.globalconfig["DEFAULT"].get("autoreload", 1)) + self.globalconfig["DEFAULT"].getboolean("autoreload", True) self.autoreloaddelay = \ - int(self.globalconfig["DEFAULT"].get("autoreloaddelay", 5)) + self.globalconfig["DEFAULT"].getint("autoreloaddelay", 5) self.autostart = \ - int(self.globalconfig["DEFAULT"].get("autostart", 0)) + self.globalconfig["DEFAULT"].getboolean("autostart", False) self.plcworkdir = \ self.globalconfig["DEFAULT"].get("plcworkdir", ".") self.plcprogram = \ @@ -173,23 +173,23 @@ class RevPiPyLoad(): self.plcarguments = \ self.globalconfig["DEFAULT"].get("plcarguments", "") self.plcuid = \ - int(self.globalconfig["DEFAULT"].get("plcuid", 65534)) + self.globalconfig["DEFAULT"].getint("plcuid", 65534) self.plcgid = \ - int(self.globalconfig["DEFAULT"].get("plcgid", 65534)) + self.globalconfig["DEFAULT"].getint("plcgid", 65534) self.pythonversion = \ - int(self.globalconfig["DEFAULT"].get("pythonversion", 3)) + self.globalconfig["DEFAULT"].getint("pythonversion", 3) self.rtlevel = \ - int(self.globalconfig["DEFAULT"].get("rtlevel", 0)) + self.globalconfig["DEFAULT"].getint("rtlevel", 0) self.zeroonerror = \ - int(self.globalconfig["DEFAULT"].get("zeroonerror", 1)) + self.globalconfig["DEFAULT"].getboolean("zeroonerror", True) self.zeroonexit = \ - int(self.globalconfig["DEFAULT"].get("zeroonexit", 1)) + self.globalconfig["DEFAULT"].getboolean("zeroonexit", True) # Konfiguration verarbeiten [PLCSLAVE] - self.plcslave = 0 + self.plcslave = False if "PLCSLAVE" in self.globalconfig: self.plcslave = \ - int(self.globalconfig["PLCSLAVE"].get("plcslave", 0)) + self.globalconfig["PLCSLAVE"].getboolean("plcslave", False) # Berechtigungen laden if not self.plcslaveacl.loadaclfile( @@ -197,7 +197,7 @@ class RevPiPyLoad(): proginit.logger.warning( "can not load plcslave acl - wrong format" ) - if self.plcslave != 1: + if not self.plcslave: self.stop_plcslave() # Bind IP lesen und anpassen @@ -209,13 +209,13 @@ class RevPiPyLoad(): self.plcslavebindip = "127.0.0.1" self.plcslaveport = \ - int(self.globalconfig["PLCSLAVE"].get("port", 55234)) + self.globalconfig["PLCSLAVE"].getint("port", 55234) # Konfiguration verarbeiten [XMLRPC] - self.xmlrpc = 0 + self.xmlrpc = False if "XMLRPC" in self.globalconfig: self.xmlrpc = \ - int(self.globalconfig["XMLRPC"].get("xmlrpc", 0)) + self.globalconfig["XMLRPC"].getboolean("xmlrpc", False) if not self.xmlrpcacl.loadaclfile( self.globalconfig["XMLRPC"].get("aclfile", "")): @@ -232,7 +232,7 @@ class RevPiPyLoad(): self.xmlrpcbindip = "127.0.0.1" self.xmlrpcport = \ - int(self.globalconfig["XMLRPC"].get("port", 55123)) + self.globalconfig["XMLRPC"].getint("port", 55123) # Workdirectory wechseln if not os.access(self.plcworkdir, os.R_OK | os.W_OK | os.X_OK): @@ -273,8 +273,9 @@ class RevPiPyLoad(): self.th_plcslave.check_connectedacl() # XMLRPC-Server Instantiieren und konfigurieren - if self.xmlrpc == 0: - self.xmlrpc = None + if not self.xmlrpc: + # Nach Reload und Deaktivierung alte XML Instanz löschen + self.xsrv = None else: proginit.logger.debug("create xmlrpc server") self.xsrv = SaveXMLRPCServer( @@ -387,13 +388,13 @@ class RevPiPyLoad(): self.plcarguments, self.pythonversion ) - th_plc.autoreload = bool(self.autoreload) + th_plc.autoreload = self.autoreload th_plc.autoreloaddelay = self.autoreloaddelay th_plc.gid = int(self.plcgid) th_plc.uid = int(self.plcuid) th_plc.rtlevel = int(self.rtlevel) - th_plc.zeroonerror = bool(self.zeroonerror) - th_plc.zeroonexit = bool(self.zeroonexit) + th_plc.zeroonerror = self.zeroonerror + th_plc.zeroonexit = self.zeroonexit proginit.logger.debug("leave RevPiPyLoad._plcthread()") return th_plc @@ -499,7 +500,7 @@ class RevPiPyLoad(): proginit.logger.info("starting revpipyload") self._exit = False - if self.xmlrpc >= 1: + if self.xmlrpc and self.xsrv is not None: proginit.logger.info("start xmlrpc-server") self.xsrv.start() diff --git a/setup.py b/setup.py index 8307359..f61756b 100644 --- a/setup.py +++ b/setup.py @@ -27,7 +27,7 @@ setup( license="LGPLv3", name="revpipyload", - version="0.6.5", + version="0.6.6", scripts=["data/revpipyload"],