Improve SSE client resilience in tellupdater by adding retry mechanism and enhanced error logging

This commit is contained in:
GotthardG
2026-03-20 11:55:38 +01:00
parent a3d4027b08
commit 12412c29d8
+19 -13
View File
@@ -38,21 +38,27 @@ def listen_to_sse():
print(f"[SSE][WARN] No TELL URL configured – SSE listener not started. (tell_client.url={tell_client.url})")
return
sse_url = tell_client.url + "/events"
try:
# Use URL directly for sseclient variants that manage their own HTTP stream.
client = sseclient.SSEClient(sse_url)
while True:
try:
print(f"[SSE][INFO] Attempting to connect to {sse_url}...")
# Use URL directly for sseclient variants that manage their own HTTP stream.
client = sseclient.SSEClient(sse_url)
print("[SSE][listen_to_sse] Initial detected pucks fetch on connect")
handle_tell_change_event()
print("[SSE][listen_to_sse] Initial detected pucks fetch on connect")
handle_tell_change_event()
# Compatibility: some SSEClient versions are iterable, others expose .events().
events_iter = client.events() if hasattr(client, "events") else iter(client)
for event in events_iter:
#print(f"event = {event.event} with data: {event.data}")
if event.event == "DewarContentUpdate":
on_sse_event(event)
except Exception as exc:
print(f"[SSE][listen_to_sse][ERROR] Failed to connect to {sse_url}: {exc}")
# Compatibility: some SSEClient versions are iterable, others expose .events().
events_iter = client.events() if hasattr(client, "events") else iter(client)
for event in events_iter:
# print(f"event = {event.event} with data: {event.data}")
if event.event == "DewarContentUpdate":
on_sse_event(event)
except Exception as exc:
print(f"[SSE][listen_to_sse][ERROR] Connection lost or failed: {exc}")
print("[SSE][INFO] Reconnecting to SSE in 5 seconds...")
time.sleep(5)
def compare_and_report_change(old, new, key_func):
"""