mirror of
https://github.com/tiqi-group/pydase.git
synced 2025-04-22 01:00:02 +02:00
feat: wrapping main loop in try except block
This ensures that - the shutdown coroutine will be saved to close all resources gracefully - the service state is being saved when some unexpected error happens
This commit is contained in:
parent
5fbbdd994c
commit
dd1cc3bc31
@ -23,7 +23,7 @@ from .web_server import WebAPI
|
|||||||
try:
|
try:
|
||||||
import tiqi_rpc
|
import tiqi_rpc
|
||||||
except ImportError:
|
except ImportError:
|
||||||
logger.debug("tiqi_rpc is not installed. tiqi_rpc. Server will not be exposed.")
|
logger.debug("tiqi_rpc is not installed. tiqi_rpc server will not be exposed.")
|
||||||
tiqi_rpc = None # type: ignore
|
tiqi_rpc = None # type: ignore
|
||||||
|
|
||||||
|
|
||||||
@ -76,7 +76,11 @@ class Server:
|
|||||||
except RuntimeError:
|
except RuntimeError:
|
||||||
self._loop = asyncio.new_event_loop()
|
self._loop = asyncio.new_event_loop()
|
||||||
asyncio.set_event_loop(self._loop)
|
asyncio.set_event_loop(self._loop)
|
||||||
|
try:
|
||||||
self._loop.run_until_complete(self.serve())
|
self._loop.run_until_complete(self.serve())
|
||||||
|
except Exception:
|
||||||
|
self._loop.run_until_complete(self.shutdown())
|
||||||
|
raise
|
||||||
|
|
||||||
async def serve(self) -> None:
|
async def serve(self) -> None:
|
||||||
process_id = os.getpid()
|
process_id = os.getpid()
|
||||||
@ -174,6 +178,7 @@ class Server:
|
|||||||
logger.info("Shutting down")
|
logger.info("Shutting down")
|
||||||
|
|
||||||
logger.info(f"Saving data to {self._service._filename}.")
|
logger.info(f"Saving data to {self._service._filename}.")
|
||||||
|
if self._service._filename is not None:
|
||||||
self._service.write_to_file()
|
self._service.write_to_file()
|
||||||
|
|
||||||
await self.__cancel_servers()
|
await self.__cancel_servers()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user