diff --git a/bec_widgets/cli/client_utils.py b/bec_widgets/cli/client_utils.py index 8ea62026..16e7f37b 100644 --- a/bec_widgets/cli/client_utils.py +++ b/bec_widgets/cli/client_utils.py @@ -86,15 +86,10 @@ def _start_plot_process(gui_id, gui_class, config) -> None: Start the plot in a new process. """ # pylint: disable=subprocess-run-check - command = [ - "bec-gui-server", - "--id", - gui_id, - "--config", - config, - "--gui_class", - gui_class.__name__, - ] + command = ["bec-gui-server", "--id", gui_id, "--gui_class", gui_class.__name__] + if config: + command.extend(["--config", config]) + env_dict = os.environ.copy() env_dict["PYTHONUNBUFFERED"] = "1" process = subprocess.Popen( @@ -165,7 +160,7 @@ class BECGuiClientMixin: if self._process is None or self._process.poll() is not None: self._start_update_script() self._process, self._process_output_processing_thread = _start_plot_process( - self._gui_id, self.__class__, self._client._service_config.redis + self._gui_id, self.__class__, self._client._service_config.config_path ) while not self.gui_is_alive(): print("Waiting for GUI to start...") diff --git a/bec_widgets/cli/server.py b/bec_widgets/cli/server.py index eeac0736..f83f7ee9 100644 --- a/bec_widgets/cli/server.py +++ b/bec_widgets/cli/server.py @@ -2,16 +2,20 @@ import inspect from typing import Union from bec_lib.endpoints import MessageEndpoints +from bec_lib.logger import bec_logger +from bec_lib.service_config import ServiceConfig from bec_lib.utils.import_utils import lazy_import from qtpy.QtCore import QTimer from bec_widgets.cli.rpc_register import RPCRegister from bec_widgets.utils import BECDispatcher from bec_widgets.utils.bec_connector import BECConnector +from bec_widgets.utils.bec_dispatcher import QtRedisConnector from bec_widgets.widgets.dock.dock_area import BECDockArea from bec_widgets.widgets.figure import BECFigure messages = lazy_import("bec_lib.messages") +logger = bec_logger.logger class BECWidgetsCLIServer: @@ -157,6 +161,13 @@ def main(): ) gui_class = BECFigure + service_config = ServiceConfig(args.config) + bec_logger.configure( + service_config.redis, + QtRedisConnector, + service_name="BECWidgetsCLIServer", + service_config=service_config.service_config, + ) server = BECWidgetsCLIServer(gui_id=args.id, config=args.config, gui_class=gui_class) gui = server.gui diff --git a/bec_widgets/utils/bec_dispatcher.py b/bec_widgets/utils/bec_dispatcher.py index 3362ee5c..70290780 100644 --- a/bec_widgets/utils/bec_dispatcher.py +++ b/bec_widgets/utils/bec_dispatcher.py @@ -79,7 +79,7 @@ class BECDispatcher: cls._initialized = False return cls._instance - def __init__(self, client=None, config: str = None): + def __init__(self, client=None, config: str | ServiceConfig = None): if self._initialized: return @@ -91,10 +91,11 @@ class BECDispatcher: if self.client is None: if config is not None: - host, port = config.split(":") - redis_config = {"host": host, "port": port} + if not isinstance(config, ServiceConfig): + # config is supposed to be a path + config = ServiceConfig(config) self.client = BECClient( - config=ServiceConfig(redis=redis_config), connector_cls=QtRedisConnector + config=config, connector_cls=QtRedisConnector ) # , forced=True) else: self.client = BECClient(connector_cls=QtRedisConnector) # , forced=True) diff --git a/tests/end-2-end/conftest.py b/tests/end-2-end/conftest.py index 1f4a9653..cbda6aad 100644 --- a/tests/end-2-end/conftest.py +++ b/tests/end-2-end/conftest.py @@ -30,7 +30,7 @@ def gui_id(): def plot_server(gui_id, klass, client_lib): dispatcher = BECDispatcher(client=client_lib) # Has to init singleton with fixture client process, output_thread = _start_plot_process( - gui_id, klass, client_lib._client._service_config.redis + gui_id, klass, client_lib._client._service_config.config_path ) try: while client_lib._client.connector.get(MessageEndpoints.gui_heartbeat(gui_id)) is None: