Improve SSE client resilience in tellupdater by adding retry mechanism and enhanced error logging
This commit is contained in:
+19
-13
@@ -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):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user