From f14e652edd4c43fe840be4e6d717e7c82801115e Mon Sep 17 00:00:00 2001 From: GotthardG <51994228+GotthardG@users.noreply.github.com> Date: Tue, 24 Jun 2025 13:07:02 +0200 Subject: [PATCH] Refactor SSE listener and improve logging for TELL updates Enhanced the SSE listener with better error handling and debug logs. Added checks for missing TELL URL and improved event data handling for "DewarContentUpdate". This ensures robustness and clarity in handling TELL updates. --- daq/src/aaredaq/tellupdater.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/daq/src/aaredaq/tellupdater.py b/daq/src/aaredaq/tellupdater.py index 78608b07..2d1649cf 100644 --- a/daq/src/aaredaq/tellupdater.py +++ b/daq/src/aaredaq/tellupdater.py @@ -25,11 +25,20 @@ current_pucks = [] last_pucks_sent = [] def listen_to_sse(): + print("[DEBUG] Entered listen_to_sse()") + if not tell_client.url: + 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" - with requests.get(sse_url, stream=True) as response: + try: + response = requests.get(sse_url, stream=True) client = sseclient.SSEClient(response) - for event in client: - on_sse_event(event) + for event in client.events(): + if event.event == "DewarContentUpdate": + print(f"event: {event.event}, data: {event.data}") + on_sse_event(event) + except requests.exceptions.RequestException as exc: + print(f"[SSE][ERROR] Failed to connect to {sse_url}: {exc}") def compare_and_report_change(old, new, key_func): old_ids = set(key_func(p) for p in old) @@ -71,15 +80,10 @@ def handle_tell_change_event(): print(f"[SSE][ERROR] {exc}") def on_sse_event(event): - # event is an sseclient.Event object - print(f"Received SSE event: {event.event}") + print(f"[EVENT] SSE event: {event.event}") + print(f"[EVENT] Data: {event.data}") if event.event == "DewarContentUpdate": print("Dewar content changed, updating...") - # Option 1: Use event.data directly if it is complete puck info: - # puck_info = json.loads(event.data) - # do something with puck_info - - # Option 2: Ask TELL again for fresh data handle_tell_change_event() def on_message(ws, message):