From 423441a74c1e6b19913866793404c46183755cfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mose=20M=C3=BCller?= Date: Thu, 19 Jun 2025 10:23:07 +0200 Subject: [PATCH] initialise WebServer in pydase.Server constructor The WebServer can be initialised in the pydase.Server constructor without any problems. This would allow users to access the socketio server before starting the pydase.Server. --- src/pydase/server/server.py | 23 +++++++++++----------- src/pydase/server/web_server/web_server.py | 6 ++---- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/pydase/server/server.py b/src/pydase/server/server.py index 9113e4c..a1be480 100644 --- a/src/pydase/server/server.py +++ b/src/pydase/server/server.py @@ -182,6 +182,14 @@ class Server: self._state_manager.load_state() autostart_service_tasks(self._service) + self._web_server = WebServer( + data_service_observer=self._observer, + host=self._host, + port=self._web_port, + enable_frontend=self._enable_web, + **self._kwargs, + ) + def run(self) -> None: """ Initializes the asyncio event loop and starts the server. @@ -211,6 +219,10 @@ class Server: self._loop.set_exception_handler(self.custom_exception_handler) self.install_signal_handlers() + server_task = self._loop.create_task(self._web_server.serve()) + server_task.add_done_callback(self._handle_server_shutdown) + self.servers["web"] = server_task + for server in self._additional_servers: addin_server = server["server"]( data_service_observer=self._observer, @@ -226,17 +238,6 @@ class Server: server_task = self._loop.create_task(addin_server.serve()) server_task.add_done_callback(self._handle_server_shutdown) self.servers[server_name] = server_task - self._web_server = WebServer( - data_service_observer=self._observer, - host=self._host, - port=self._web_port, - enable_frontend=self._enable_web, - **self._kwargs, - ) - server_task = self._loop.create_task(self._web_server.serve()) - - server_task.add_done_callback(self._handle_server_shutdown) - self.servers["web"] = server_task self._loop.create_task(self._state_manager.autosave()) diff --git a/src/pydase/server/web_server/web_server.py b/src/pydase/server/web_server/web_server.py index 5da1631..4417cfc 100644 --- a/src/pydase/server/web_server/web_server.py +++ b/src/pydase/server/web_server/web_server.py @@ -105,13 +105,11 @@ class WebServer: self._service_config_dir = config_dir self._generate_web_settings = generate_web_settings - self._loop: asyncio.AbstractEventLoop + self._loop = asyncio.get_event_loop() + self._sio = setup_sio_server(self.observer, self.enable_cors, self._loop) self._initialise_configuration() async def serve(self) -> None: - self._loop = asyncio.get_running_loop() - self._sio = setup_sio_server(self.observer, self.enable_cors, self._loop) - async def index( request: aiohttp.web.Request, ) -> aiohttp.web.Response | aiohttp.web.FileResponse: