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.
This commit is contained in:
Mose Müller
2025-06-19 10:23:07 +02:00
parent 9ec60e3891
commit 423441a74c
2 changed files with 14 additions and 15 deletions

View File

@ -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())

View File

@ -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: