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:
@ -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...")
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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:
|
||||||
|
Reference in New Issue
Block a user