fix: Web sieht Collector-Daten; Collector-Robustheit + DB-Pfad im Container
- web/lib/db.ts: pro Request frische readonly-Verbindung statt langlebigem Singleton. Eine gecachte WAL-Verbindung bekommt Writes des Collectors über den Docker-FUSE-Mount nicht mit -> Seite blieb leer. - collector.py: connect_async + reconnect_delay_set statt connect(), damit ein nicht erreichbarer Broker keinen Container-Crash-Loop auslöst, sondern in-process mit Backoff neu versucht wird. - docker-compose.yml: DB_PATH=/data/charges.db für den collector-Service erzwungen, damit ein relatives DB_PATH aus .env (lokaler Lauf) im Container nicht neben das gemountete Volume schreibt. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -121,8 +121,13 @@ def main() -> None:
|
||||
client.on_disconnect = on_disconnect
|
||||
client.on_message = on_message
|
||||
|
||||
# connect_async + loop_forever: bei nicht erreichbarem Broker wird
|
||||
# in-process mit Backoff neu versucht, statt den Prozess zu beenden
|
||||
# (kein Container-Crash-Loop). Verbindet sich selbst, sobald der
|
||||
# Broker erreichbar ist.
|
||||
log(f"Verbinde zu {MQTT_HOST}:{MQTT_PORT} ...")
|
||||
client.connect(MQTT_HOST, MQTT_PORT, keepalive=60)
|
||||
client.reconnect_delay_set(min_delay=1, max_delay=60)
|
||||
client.connect_async(MQTT_HOST, MQTT_PORT, keepalive=60)
|
||||
client.loop_forever(retry_first_connection=True)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user