diff --git a/devcycle_python_sdk/managers/sse_manager.py b/devcycle_python_sdk/managers/sse_manager.py index d39b6d4..5f55da3 100644 --- a/devcycle_python_sdk/managers/sse_manager.py +++ b/devcycle_python_sdk/managers/sse_manager.py @@ -2,9 +2,12 @@ import ld_eventsource import ld_eventsource.actions +import logging import ld_eventsource.config from typing import Callable +logger = logging.getLogger(__name__) + class SSEManager: def __init__( @@ -31,13 +34,16 @@ def read_events( handlemessage: Callable[[ld_eventsource.actions.Event], None], ): self.client.start() - for event in self.client.all: - if isinstance(event, ld_eventsource.actions.Start): - handlestate(event) - elif isinstance(event, ld_eventsource.actions.Fault): - handleerror(event) - elif isinstance(event, ld_eventsource.actions.Event): - handlemessage(event) + try: + for event in self.client.all: + if isinstance(event, ld_eventsource.actions.Start): + handlestate(event) + elif isinstance(event, ld_eventsource.actions.Fault): + handleerror(event) + elif isinstance(event, ld_eventsource.actions.Event): + handlemessage(event) + except Exception as e: + logger.exception(f"DevCycle: failed to read SSE message: {e}") def update(self, config: dict): if self.use_new_config(config["sse"]):