0
0
mirror of https://github.com/bec-project/bec_widgets.git synced 2025-07-14 11:41:49 +02:00

feat: add logger for BEC GUI server

This commit is contained in:
2024-06-17 09:01:06 +02:00
committed by wyzula_j
parent 7f7bef7581
commit 630616ec72
4 changed files with 22 additions and 15 deletions

View File

@ -86,15 +86,10 @@ def _start_plot_process(gui_id, gui_class, config) -> None:
Start the plot in a new process. Start the plot in a new process.
""" """
# pylint: disable=subprocess-run-check # pylint: disable=subprocess-run-check
command = [ command = ["bec-gui-server", "--id", gui_id, "--gui_class", gui_class.__name__]
"bec-gui-server", if config:
"--id", command.extend(["--config", config])
gui_id,
"--config",
config,
"--gui_class",
gui_class.__name__,
]
env_dict = os.environ.copy() env_dict = os.environ.copy()
env_dict["PYTHONUNBUFFERED"] = "1" env_dict["PYTHONUNBUFFERED"] = "1"
process = subprocess.Popen( process = subprocess.Popen(
@ -165,7 +160,7 @@ class BECGuiClientMixin:
if self._process is None or self._process.poll() is not None: if self._process is None or self._process.poll() is not None:
self._start_update_script() self._start_update_script()
self._process, self._process_output_processing_thread = _start_plot_process( 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(): while not self.gui_is_alive():
print("Waiting for GUI to start...") print("Waiting for GUI to start...")

View File

@ -2,16 +2,20 @@ import inspect
from typing import Union from typing import Union
from bec_lib.endpoints import MessageEndpoints 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 bec_lib.utils.import_utils import lazy_import
from qtpy.QtCore import QTimer from qtpy.QtCore import QTimer
from bec_widgets.cli.rpc_register import RPCRegister from bec_widgets.cli.rpc_register import RPCRegister
from bec_widgets.utils import BECDispatcher from bec_widgets.utils import BECDispatcher
from bec_widgets.utils.bec_connector import BECConnector 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.dock.dock_area import BECDockArea
from bec_widgets.widgets.figure import BECFigure from bec_widgets.widgets.figure import BECFigure
messages = lazy_import("bec_lib.messages") messages = lazy_import("bec_lib.messages")
logger = bec_logger.logger
class BECWidgetsCLIServer: class BECWidgetsCLIServer:
@ -157,6 +161,13 @@ def main():
) )
gui_class = BECFigure 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) server = BECWidgetsCLIServer(gui_id=args.id, config=args.config, gui_class=gui_class)
gui = server.gui gui = server.gui

View File

@ -79,7 +79,7 @@ class BECDispatcher:
cls._initialized = False cls._initialized = False
return cls._instance return cls._instance
def __init__(self, client=None, config: str = None): def __init__(self, client=None, config: str | ServiceConfig = None):
if self._initialized: if self._initialized:
return return
@ -91,10 +91,11 @@ class BECDispatcher:
if self.client is None: if self.client is None:
if config is not None: if config is not None:
host, port = config.split(":") if not isinstance(config, ServiceConfig):
redis_config = {"host": host, "port": port} # config is supposed to be a path
config = ServiceConfig(config)
self.client = BECClient( self.client = BECClient(
config=ServiceConfig(redis=redis_config), connector_cls=QtRedisConnector config=config, connector_cls=QtRedisConnector
) # , forced=True) ) # , forced=True)
else: else:
self.client = BECClient(connector_cls=QtRedisConnector) # , forced=True) self.client = BECClient(connector_cls=QtRedisConnector) # , forced=True)

View File

@ -30,7 +30,7 @@ def gui_id():
def plot_server(gui_id, klass, client_lib): def plot_server(gui_id, klass, client_lib):
dispatcher = BECDispatcher(client=client_lib) # Has to init singleton with fixture client dispatcher = BECDispatcher(client=client_lib) # Has to init singleton with fixture client
process, output_thread = _start_plot_process( 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: try:
while client_lib._client.connector.get(MessageEndpoints.gui_heartbeat(gui_id)) is None: while client_lib._client.connector.get(MessageEndpoints.gui_heartbeat(gui_id)) is None: