From 229228d209797fc05ae3e44bb7f4de19d009e877 Mon Sep 17 00:00:00 2001 From: Ian Renton Date: Tue, 21 Oct 2025 08:11:43 +0100 Subject: [PATCH] Apply SSE Spot Provider patch by Steven M1SDH --- spotproviders/sse_spot_provider.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/spotproviders/sse_spot_provider.py b/spotproviders/sse_spot_provider.py index 9d07157..4021ccc 100644 --- a/spotproviders/sse_spot_provider.py +++ b/spotproviders/sse_spot_provider.py @@ -34,11 +34,19 @@ class SSESpotProvider(SpotProvider): if self.thread: self.thread.join() + def _on_open(self): + self.status = "Waiting for Data" + + def _on_error(self): + self.status = "Connecting" + def run(self): while not self.stopped: try: logging.debug("Connecting to " + self.name + " spot API...") - with EventSource(self.url, headers=HTTP_HEADERS, latest_event_id=self.last_event_id, timeout=30) as event_source: + self.status = "Connecting" + with EventSource(self.url, headers=HTTP_HEADERS, latest_event_id=self.last_event_id, timeout=30, + on_open=self._on_open, on_error=self._on_error) as event_source: self.event_source = event_source for event in self.event_source: if event.type == 'message': @@ -58,6 +66,8 @@ class SSESpotProvider(SpotProvider): except Exception as e: self.status = "Error" logging.exception("Exception in SSE Spot Provider (" + self.name + ")") + else: + self.status = "Disconnected" sleep(5) # Wait before trying to reconnect # Convert an SSE message received from the API into a spot. The whole message data is provided here so the subclass