Datenbankverbindung vor den Sonnenzeiten pruefen, Logs sparsamer drehen
Die Verbindung zur solarLog-Datenbank steht den ganzen Tag ungenutzt herum und wird vom Server irgendwann geschlossen; das Lesen der Sonnenzeiten war dann der erste Zugriff, der ins Leere lief. Ein ping(reconnect=True) davor holt sie zurueck. Ausserdem stehen die abgefangenen Fehler jetzt mit %r im Protokoll: bei manchen Ausnahmen ist str() leer, und dann stand dort eine Warnung ohne Grund. logrotate dreht monatlich statt taeglich, dafuer schon ab 10 MB.
This commit is contained in:
@@ -718,6 +718,7 @@ class Runner:
|
||||
return self._sonne[1], self._sonne[2]
|
||||
auf, unter = "00:00", "00:00"
|
||||
try:
|
||||
self.solar.ping(reconnect=True) # re-establish connection if it dropped
|
||||
with self.solar.cursor() as c:
|
||||
c.execute("SELECT sunrise, sunset FROM daylight WHERE date = %s", (heute,))
|
||||
zeile = c.fetchone()
|
||||
@@ -727,7 +728,7 @@ class Runner:
|
||||
else:
|
||||
logger.warning("Kein Eintrag in daylight fuer %s", heute)
|
||||
except Exception as fehler:
|
||||
logger.warning("Sonnenzeiten nicht lesbar: %s", fehler)
|
||||
logger.warning("Sonnenzeiten nicht lesbar: %r", fehler)
|
||||
self._sonne = (heute, auf, unter)
|
||||
return auf, unter
|
||||
|
||||
@@ -752,7 +753,7 @@ class Runner:
|
||||
if zeile:
|
||||
stand = {"feiertag": bool(zeile["holiday"]), "ferien": bool(zeile["vacation"])}
|
||||
except Exception as fehler:
|
||||
logger.warning("Kalender nicht lesbar: %s", fehler)
|
||||
logger.warning("Kalender nicht lesbar: %r", fehler)
|
||||
self._kalender = (heute, stand)
|
||||
return stand
|
||||
|
||||
@@ -816,7 +817,7 @@ class Runner:
|
||||
self.geschrieben[state_id] = wert
|
||||
self.geschrieben_um[state_id] = jetzt
|
||||
except Exception as fehler:
|
||||
logger.warning("current_value nicht schreibbar: %s", fehler)
|
||||
logger.warning("current_value nicht schreibbar: %r", fehler)
|
||||
|
||||
# --- Ausfuehren ------------------------------------------------------
|
||||
|
||||
@@ -865,7 +866,7 @@ class Runner:
|
||||
c.execute("""INSERT INTO automation_log (automation_id, result, detail)
|
||||
VALUES (%s, %s, %s)""", (automatik["id"], ergebnis, detail))
|
||||
except Exception as fehler:
|
||||
logger.warning("Protokoll nicht schreibbar: %s", fehler)
|
||||
logger.warning("Protokoll nicht schreibbar: %r", fehler)
|
||||
automatik["last_run"] = datetime.now()
|
||||
self.lief_im_fenster[automatik["id"]] = True
|
||||
|
||||
@@ -899,7 +900,7 @@ class Runner:
|
||||
c.execute("""UPDATE automations SET cond_met = %s, changed = changed
|
||||
WHERE id = %s""", (automatik["cond_met"], automatik["id"]))
|
||||
except Exception as fehler:
|
||||
logger.warning("cond_met nicht schreibbar: %s", fehler)
|
||||
logger.warning("cond_met nicht schreibbar: %r", fehler)
|
||||
|
||||
def durchlauf(self, fenster=NACHHOLFENSTER):
|
||||
jetzt = datetime.now()
|
||||
@@ -979,7 +980,7 @@ class Runner:
|
||||
c.execute("DELETE FROM automation_log WHERE ts < NOW() - INTERVAL %s DAY",
|
||||
(LOG_AUFBEWAHRUNG_TAGE,))
|
||||
except Exception as fehler:
|
||||
logger.warning("Protokoll nicht aufraeumbar: %s", fehler)
|
||||
logger.warning("Protokoll nicht aufraeumbar: %r", fehler)
|
||||
|
||||
# --- Hauptschleife ---------------------------------------------------
|
||||
|
||||
@@ -1012,7 +1013,7 @@ class Runner:
|
||||
logger.info("Regelwerk hat sich geaendert, wird neu geladen")
|
||||
self.regelwerk_laden()
|
||||
except Exception as fehler:
|
||||
logger.warning("Regelwerk nicht pruefbar: %s", fehler)
|
||||
logger.warning("Regelwerk nicht pruefbar: %r", fehler)
|
||||
|
||||
if nur_einmal:
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user