Fehler bei deaktiviertem XMLRPC behoben

Fehler bei AutoReloadDelay behoben (Zeit passte nicht)
ConfigParser mit Typen bei get versehen
This commit is contained in:
2018-06-24 10:42:01 +02:00
parent f937767479
commit 0bcd1a2b6e
4 changed files with 37 additions and 38 deletions

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Project SYSTEM "Project-5.1.dtd"> <!DOCTYPE Project SYSTEM "Project-5.1.dtd">
<!-- eric project file for project revpipyload --> <!-- eric project file for project revpipyload -->
<!-- Saved: 2018-04-07, 19:21:46 --> <!-- Saved: 2018-06-24, 10:04:03 -->
<!-- Copyright (C) 2018 Sven Sager, akira@narux.de --> <!-- Copyright (C) 2018 Sven Sager, akira@narux.de -->
<Project version="5.1"> <Project version="5.1">
<Language>en_US</Language> <Language>en_US</Language>
@@ -9,7 +9,7 @@
<ProgLanguage mixed="0">Python3</ProgLanguage> <ProgLanguage mixed="0">Python3</ProgLanguage>
<ProjectType>Console</ProjectType> <ProjectType>Console</ProjectType>
<Description>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.</Description> <Description>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.</Description>
<Version>0.6.5</Version> <Version>0.6.6</Version>
<Author>Sven Sager</Author> <Author>Sven Sager</Author>
<Email>akira@narux.de</Email> <Email>akira@narux.de</Email>
<Eol index="1"/> <Eol index="1"/>

View File

@@ -41,7 +41,6 @@ class RevPiPlc(Thread):
self._procplc = None self._procplc = None
self._pversion = pversion self._pversion = pversion
self.autoreload = False self.autoreload = False
self.autoreloaddelay = 5 * 2
self.exitcode = None self.exitcode = None
self.gid = 65534 self.gid = 65534
self.uid = 65534 self.uid = 65534
@@ -152,7 +151,7 @@ class RevPiPlc(Thread):
self.exitcode = self._procplc.poll() self.exitcode = self._procplc.poll()
if self.exitcode is not None: if self.exitcode is not None:
if self._delaycounter == self.autoreloaddelay: if self._delaycounter == self._autoreloaddelay:
if self.exitcode > 0: if self.exitcode > 0:
# PLC Python Programm abgestürzt # PLC Python Programm abgestürzt
proginit.logger.error( proginit.logger.error(
@@ -178,10 +177,9 @@ class RevPiPlc(Thread):
) )
if not self._evt_exit.is_set() and self.autoreload: if not self._evt_exit.is_set() and self.autoreload:
if self._delaycounter > 0: self._delaycounter -= 1
self._delaycounter -= 1 if self._delaycounter < 0:
else: self._delaycounter = self._autoreloaddelay
self._delaycounter = self.autoreloaddelay
# Prozess neu starten # Prozess neu starten
self._procplc = self._spopen(lst_proc) self._procplc = self._spopen(lst_proc)

View File

@@ -50,7 +50,7 @@ from time import asctime
from xmlrpc.client import Binary from xmlrpc.client import Binary
from xrpcserver import SaveXMLRPCServer from xrpcserver import SaveXMLRPCServer
pyloadversion = "0.6.5" pyloadversion = "0.6.6"
class RevPiPyLoad(): class RevPiPyLoad():
@@ -108,11 +108,11 @@ class RevPiPyLoad():
ip = "" ip = ""
elif ip == "": elif ip == "":
ip = "127.0.0.1" ip = "127.0.0.1"
port = int(self.globalconfig["PLCSLAVE"].get("port", 55234)) port = self.globalconfig["PLCSLAVE"].getint("port", 55234)
return ( return (
self.plcslave != self.plcslave !=
int(self.globalconfig["PLCSLAVE"].get("plcslave", 0)) self.globalconfig["PLCSLAVE"].getboolean("plcslave", False)
or self.plcslavebindip != ip or self.plcslavebindip != ip
or self.plcslaveport != port or self.plcslaveport != port
) )
@@ -133,13 +133,13 @@ class RevPiPyLoad():
or self.plcarguments != or self.plcarguments !=
self.globalconfig["DEFAULT"].get("plcarguments", "") self.globalconfig["DEFAULT"].get("plcarguments", "")
or self.plcuid != or self.plcuid !=
int(self.globalconfig["DEFAULT"].get("plcuid", 65534)) self.globalconfig["DEFAULT"].getint("plcuid", 65534)
or self.plcgid != or self.plcgid !=
int(self.globalconfig["DEFAULT"].get("plcgid", 65534)) self.globalconfig["DEFAULT"].getint("plcgid", 65534)
or self.pythonversion != or self.pythonversion !=
int(self.globalconfig["DEFAULT"].get("pythonversion", 3)) self.globalconfig["DEFAULT"].getint("pythonversion", 3)
or self.rtlevel != or self.rtlevel !=
int(self.globalconfig["DEFAULT"].get("rtlevel", 0)) self.globalconfig["DEFAULT"].getint("rtlevel", 0)
) )
def _loadconfig(self): def _loadconfig(self):
@@ -161,11 +161,11 @@ class RevPiPyLoad():
# Konfiguration verarbeiten [DEFAULT] # Konfiguration verarbeiten [DEFAULT]
self.autoreload = \ self.autoreload = \
int(self.globalconfig["DEFAULT"].get("autoreload", 1)) self.globalconfig["DEFAULT"].getboolean("autoreload", True)
self.autoreloaddelay = \ self.autoreloaddelay = \
int(self.globalconfig["DEFAULT"].get("autoreloaddelay", 5)) self.globalconfig["DEFAULT"].getint("autoreloaddelay", 5)
self.autostart = \ self.autostart = \
int(self.globalconfig["DEFAULT"].get("autostart", 0)) self.globalconfig["DEFAULT"].getboolean("autostart", False)
self.plcworkdir = \ self.plcworkdir = \
self.globalconfig["DEFAULT"].get("plcworkdir", ".") self.globalconfig["DEFAULT"].get("plcworkdir", ".")
self.plcprogram = \ self.plcprogram = \
@@ -173,23 +173,23 @@ class RevPiPyLoad():
self.plcarguments = \ self.plcarguments = \
self.globalconfig["DEFAULT"].get("plcarguments", "") self.globalconfig["DEFAULT"].get("plcarguments", "")
self.plcuid = \ self.plcuid = \
int(self.globalconfig["DEFAULT"].get("plcuid", 65534)) self.globalconfig["DEFAULT"].getint("plcuid", 65534)
self.plcgid = \ self.plcgid = \
int(self.globalconfig["DEFAULT"].get("plcgid", 65534)) self.globalconfig["DEFAULT"].getint("plcgid", 65534)
self.pythonversion = \ self.pythonversion = \
int(self.globalconfig["DEFAULT"].get("pythonversion", 3)) self.globalconfig["DEFAULT"].getint("pythonversion", 3)
self.rtlevel = \ self.rtlevel = \
int(self.globalconfig["DEFAULT"].get("rtlevel", 0)) self.globalconfig["DEFAULT"].getint("rtlevel", 0)
self.zeroonerror = \ self.zeroonerror = \
int(self.globalconfig["DEFAULT"].get("zeroonerror", 1)) self.globalconfig["DEFAULT"].getboolean("zeroonerror", True)
self.zeroonexit = \ self.zeroonexit = \
int(self.globalconfig["DEFAULT"].get("zeroonexit", 1)) self.globalconfig["DEFAULT"].getboolean("zeroonexit", True)
# Konfiguration verarbeiten [PLCSLAVE] # Konfiguration verarbeiten [PLCSLAVE]
self.plcslave = 0 self.plcslave = False
if "PLCSLAVE" in self.globalconfig: if "PLCSLAVE" in self.globalconfig:
self.plcslave = \ self.plcslave = \
int(self.globalconfig["PLCSLAVE"].get("plcslave", 0)) self.globalconfig["PLCSLAVE"].getboolean("plcslave", False)
# Berechtigungen laden # Berechtigungen laden
if not self.plcslaveacl.loadaclfile( if not self.plcslaveacl.loadaclfile(
@@ -197,7 +197,7 @@ class RevPiPyLoad():
proginit.logger.warning( proginit.logger.warning(
"can not load plcslave acl - wrong format" "can not load plcslave acl - wrong format"
) )
if self.plcslave != 1: if not self.plcslave:
self.stop_plcslave() self.stop_plcslave()
# Bind IP lesen und anpassen # Bind IP lesen und anpassen
@@ -209,13 +209,13 @@ class RevPiPyLoad():
self.plcslavebindip = "127.0.0.1" self.plcslavebindip = "127.0.0.1"
self.plcslaveport = \ self.plcslaveport = \
int(self.globalconfig["PLCSLAVE"].get("port", 55234)) self.globalconfig["PLCSLAVE"].getint("port", 55234)
# Konfiguration verarbeiten [XMLRPC] # Konfiguration verarbeiten [XMLRPC]
self.xmlrpc = 0 self.xmlrpc = False
if "XMLRPC" in self.globalconfig: if "XMLRPC" in self.globalconfig:
self.xmlrpc = \ self.xmlrpc = \
int(self.globalconfig["XMLRPC"].get("xmlrpc", 0)) self.globalconfig["XMLRPC"].getboolean("xmlrpc", False)
if not self.xmlrpcacl.loadaclfile( if not self.xmlrpcacl.loadaclfile(
self.globalconfig["XMLRPC"].get("aclfile", "")): self.globalconfig["XMLRPC"].get("aclfile", "")):
@@ -232,7 +232,7 @@ class RevPiPyLoad():
self.xmlrpcbindip = "127.0.0.1" self.xmlrpcbindip = "127.0.0.1"
self.xmlrpcport = \ self.xmlrpcport = \
int(self.globalconfig["XMLRPC"].get("port", 55123)) self.globalconfig["XMLRPC"].getint("port", 55123)
# Workdirectory wechseln # Workdirectory wechseln
if not os.access(self.plcworkdir, os.R_OK | os.W_OK | os.X_OK): 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() self.th_plcslave.check_connectedacl()
# XMLRPC-Server Instantiieren und konfigurieren # XMLRPC-Server Instantiieren und konfigurieren
if self.xmlrpc == 0: if not self.xmlrpc:
self.xmlrpc = None # Nach Reload und Deaktivierung alte XML Instanz löschen
self.xsrv = None
else: else:
proginit.logger.debug("create xmlrpc server") proginit.logger.debug("create xmlrpc server")
self.xsrv = SaveXMLRPCServer( self.xsrv = SaveXMLRPCServer(
@@ -387,13 +388,13 @@ class RevPiPyLoad():
self.plcarguments, self.plcarguments,
self.pythonversion self.pythonversion
) )
th_plc.autoreload = bool(self.autoreload) th_plc.autoreload = self.autoreload
th_plc.autoreloaddelay = self.autoreloaddelay th_plc.autoreloaddelay = self.autoreloaddelay
th_plc.gid = int(self.plcgid) th_plc.gid = int(self.plcgid)
th_plc.uid = int(self.plcuid) th_plc.uid = int(self.plcuid)
th_plc.rtlevel = int(self.rtlevel) th_plc.rtlevel = int(self.rtlevel)
th_plc.zeroonerror = bool(self.zeroonerror) th_plc.zeroonerror = self.zeroonerror
th_plc.zeroonexit = bool(self.zeroonexit) th_plc.zeroonexit = self.zeroonexit
proginit.logger.debug("leave RevPiPyLoad._plcthread()") proginit.logger.debug("leave RevPiPyLoad._plcthread()")
return th_plc return th_plc
@@ -499,7 +500,7 @@ class RevPiPyLoad():
proginit.logger.info("starting revpipyload") proginit.logger.info("starting revpipyload")
self._exit = False self._exit = False
if self.xmlrpc >= 1: if self.xmlrpc and self.xsrv is not None:
proginit.logger.info("start xmlrpc-server") proginit.logger.info("start xmlrpc-server")
self.xsrv.start() self.xsrv.start()

View File

@@ -27,7 +27,7 @@ setup(
license="LGPLv3", license="LGPLv3",
name="revpipyload", name="revpipyload",
version="0.6.5", version="0.6.6",
scripts=["data/revpipyload"], scripts=["data/revpipyload"],