diff --git a/src/aare/daq/tellupdater.py b/src/aare/daq/tellupdater.py index 5959fe45..2616ff4e 100644 --- a/src/aare/daq/tellupdater.py +++ b/src/aare/daq/tellupdater.py @@ -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): """