From e6251975b8e8baa88abaaed97e635f787a7b1ffa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mose=20M=C3=BCller?= Date: Wed, 27 Mar 2024 16:18:59 +0100 Subject: [PATCH] adds try...except blocks around update_value and get_value sio events --- src/pydase/server/web_server/sio_setup.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/pydase/server/web_server/sio_setup.py b/src/pydase/server/web_server/sio_setup.py index 660c962..5e4b92a 100644 --- a/src/pydase/server/web_server/sio_setup.py +++ b/src/pydase/server/web_server/sio_setup.py @@ -126,20 +126,30 @@ def setup_sio_events(sio: socketio.AsyncServer, state_manager: StateManager) -> logging.debug("Client [%s] disconnected", click.style(str(sid), fg="cyan")) @sio.event - async def update_value(sid: str, data: UpdateDict) -> None: + async def update_value(sid: str, data: UpdateDict) -> SerializedObject | None: # type: ignore path = data["access_path"] # this should probably happen within the following function call -> can also # look at the current type of the attribute at "path" new_value = loads(data["value"]) - return state_manager.set_service_attribute_value_by_path( - path=path, value=new_value - ) + try: + state_manager.set_service_attribute_value_by_path( + path=path, value=new_value + ) + except Exception as e: + logger.exception(e) + return dump(e) @sio.event async def get_value(sid: str, access_path: str) -> SerializedObject: - return state_manager._data_service_cache.get_value_dict_from_cache(access_path) + try: + return state_manager._data_service_cache.get_value_dict_from_cache( + access_path + ) + except Exception as e: + logger.exception(e) + return dump(e) @sio.event async def trigger_method(sid: str, data: TriggerMethodDict) -> Any: