Mahlzeit,
gibt es eine Möglichkeit User-commands innerhalb DbLog non-blocking auszuführen?
bei meiner Wöchentlichen automatischen Bereinigung führe ich auch ein "VACUUM;" aus. während dieses läuft ist FHEM blockiert.
wäre mir angenehmer wenn es nonblocking machbar wäre. :-)
Danke & Grüße
Frank
Hallo Frank,
ja gibt es.
Nutze dafür DbRep. Es gibt dort sogar ein Kommando " set <DbRep> vacuum" speziell für diesen Zweck.
vacuum - optimiert die Tabellen in der angeschlossenen Datenbank (SQLite, PostgreSQL).
Vor und nach der Optimierung kann ein FHEM-Kommando ausgeführt werden. (siehe Attribute "executeBeforeProc", "executeAfterProc")
Hinweis:
Obwohl die Funktion selbst non-blocking ausgelegt ist, muß das zugeordnete DbLog-Device im asynchronen Modus betrieben werden um ein Blockieren von FHEM zu vermeiden.
setze dir zum Beispiel die Attribute:
executeAfterProc set <DbLog-Device> reopen
executeBeforeProc set <DbLog-Device> reopen 3600
Das verhindert das DbLog während der Optimierungsphase versucht Werte in die DB zu schreiben was zu Fehlermeldungen führt.
Grüße,
Heiko
Danke Heiko!
Das DbRep Modul muss ich mir mal genauer anschauen. das kann wohl richtig viel mittlerweile. :-)
Der Tipp mit dem reopen klingt auch sinnvoll!
Thema gelöst. :-)