Merge pull request #242 from tiqi-group/refactor/web-server-initialisation

Refactor: web server initialisation
This commit is contained in:
Mose Müller
2025-06-19 10:26:12 +02:00
committed by GitHub
3 changed files with 15 additions and 16 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

@ -115,7 +115,7 @@ def setup_sio_server(
def sio_callback(
full_access_path: str, value: Any, cached_value_dict: SerializedObject
) -> None:
if cached_value_dict != {}:
if cached_value_dict != {} and loop.is_running():
async def notify() -> None:
try:

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: