Debug Parameter nimmt Werte -1, 0, 1 an.

Bei debug=-1 werden keinerlei Warnungen angezeigt
Bei debug=0 werden alle Warnungen nur ein einziges Mal angezeigt
bei debug=1 werden alle Warnungen immer angezeigt
This commit is contained in:
2019-09-01 13:07:52 +02:00
parent 485aad020f
commit 56b7c252b6
3 changed files with 38 additions and 22 deletions

View File

@@ -485,17 +485,24 @@ class ProcimgWriter(Thread):
except IOError as e:
self._modio._gotioerror("autorefresh", e, mrk_warn)
mrk_warn = False
mrk_warn = self._modio._debug == -1
self.lck_refresh.release()
continue
else:
if not mrk_warn:
warnings.warn(
"recover io errors on process image - total count "
"of {0} errors now".format(self._modio._ioerror),
RuntimeWarning
)
if self._modio._debug == 0:
warnings.warn(
"recover from io errors on process image",
RuntimeWarning
)
else:
warnings.warn(
"recover from io errors on process image - total "
"count of {0} errors now"
"".format(self._modio._ioerror),
RuntimeWarning
)
mrk_warn = True
# Alle aufwecken

View File

@@ -80,7 +80,7 @@ class RevPiModIO(object):
# Private Variablen
self.__cleanupfunc = None
self._buffedwrite = False
self._debug = False
self._debug = 1
self._exit = Event()
self._imgwriter = None
self._ioerror = 0
@@ -408,7 +408,7 @@ class RevPiModIO(object):
def _get_debug(self):
"""Gibt Status des Debugflags zurueck.
@return Status des Debugflags"""
return self._debug
return self._debug == 1
def _get_ioerrors(self):
"""Getter function.
@@ -460,18 +460,18 @@ class RevPiModIO(object):
"".format(self._maxioerrors)
)
if not show_warn:
if not show_warn or self._debug == -1:
return
if self._debug:
if self._debug == 0:
warnings.warn(
"got io error during '{0}' and count {1} errors now | {2}"
"".format(action, self._ioerror, str(e)),
"got io error on process image",
RuntimeWarning
)
else:
warnings.warn(
"got io error on process image",
"got io error during '{0}' and count {1} errors now | {2}"
"".format(action, self._ioerror, str(e)),
RuntimeWarning
)
@@ -489,14 +489,22 @@ class RevPiModIO(object):
def _set_debug(self, value):
"""Setzt debugging Status um mehr Meldungen zu erhalten oder nicht.
@param value Wenn True, werden umfangreiche Medungen angezeigt"""
if not isinstance(value, bool):
raise TypeError("value must be <class 'bool'>")
if type(value) == bool:
value = int(value)
if not type(value) == int:
# Wert -1 ist zum kompletten deaktivieren versteckt
raise TypeError("value must be <class 'bool'> or <class 'int'>")
if not -1 <= value <= 1:
raise ValueError("value must be True/False or -1, 0, 1")
self._debug = value
if value:
warnings.filterwarnings("always", module="revpimodio2")
else:
if value == -1:
warnings.filterwarnings("ignore", module="revpimodio2")
elif value == 0:
warnings.filterwarnings("default", module="revpimodio2")
else:
warnings.filterwarnings("always", module="revpimodio2")
def _set_maxioerrors(self, value):
"""Setzt Anzahl der maximal erlaubten Fehler bei Prozessabbildzugriff.
@@ -883,13 +891,13 @@ class RevPiModIO(object):
# ImgWriter mit Eventüberwachung aktivieren
self._imgwriter._collect_events(True)
e = None
runtime = 0
runtime = -1 if self._debug == -1 else 0
while not self._exit.is_set():
# Laufzeit der Eventqueue auf 0 setzen
if self._imgwriter._eventq.qsize() == 0:
runtime = 0
runtime = -1 if self._debug == -1 else 0
try:
tup_fire = self._imgwriter._eventq.get(timeout=1)

View File

@@ -516,12 +516,13 @@ class NetFH(Thread):
try:
self._slavesock.send(_syssync)
data = self._slavesock.recv(2)
except IOError as e:
except IOError:
self.__sockerr.set()
else:
if data != b'\x06\x16':
warnings.warn(
"data error in sync of NetFH", RuntimeWarning
"data error on network sync",
RuntimeWarning
)
self.__sockerr.set()