From d6fccd10f5d600ea67cf7b2a5ebb42295d15cdfe Mon Sep 17 00:00:00 2001 From: wakonig_k Date: Sat, 12 Apr 2025 20:50:52 +0200 Subject: [PATCH] fix(rpc_server): update _serialize_bec_connector to include wait parameter for registration check --- bec_widgets/utils/rpc_server.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/bec_widgets/utils/rpc_server.py b/bec_widgets/utils/rpc_server.py index 1a5c74fe..cb419c00 100644 --- a/bec_widgets/utils/rpc_server.py +++ b/bec_widgets/utils/rpc_server.py @@ -11,6 +11,7 @@ from bec_lib.endpoints import MessageEndpoints from bec_lib.logger import bec_logger from bec_lib.utils.import_utils import lazy_import from qtpy.QtCore import QTimer +from qtpy.QtWidgets import QApplication from redis.exceptions import RedisError from bec_widgets.cli.rpc.rpc_register import RPCRegister @@ -159,7 +160,7 @@ class RPCServer: # Respect RPC = False if getattr(obj, "RPC", True) is False: return None - return self._serialize_bec_connector(obj) + return self._serialize_bec_connector(obj, wait=True) def emit_heartbeat(self) -> None: """ @@ -196,15 +197,25 @@ class RPCServer: max_size=1, ) - def _serialize_bec_connector(self, connector: BECConnector) -> dict: + def _serialize_bec_connector(self, connector: BECConnector, wait=False) -> dict: """ - Create the serialization dict for a single BECConnector, - setting 'parent_id' via the real nearest BECConnector parent. + Create the serialization dict for a single BECConnector. + + Args: + connector (BECConnector): The BECConnector to serialize. + wait (bool): If True, wait until the object is registered in the RPC register. + + Returns: + dict: The serialized BECConnector object. """ config_dict = connector.config.model_dump() config_dict["parent_id"] = getattr(connector, "parent_id", None) + if wait: + while not self.rpc_register.object_is_registered(connector): + QApplication.processEvents() + return { "gui_id": connector.gui_id, "object_name": connector.object_name or connector.__class__.__name__,