From 29a0b19f0b4484dc56beb159906db8bf472c241c Mon Sep 17 00:00:00 2001 From: Gary Yendell Date: Thu, 12 Mar 2026 13:58:45 +0000 Subject: [PATCH] Update handling of event loop life cycle --- src/fastcs/control_system.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/fastcs/control_system.py b/src/fastcs/control_system.py index a111f1ba..80de717f 100644 --- a/src/fastcs/control_system.py +++ b/src/fastcs/control_system.py @@ -35,7 +35,14 @@ def __init__( ): self._controller = controller self._transports = transports - self._loop = loop or asyncio.get_event_loop() + + if loop is not None: + self._loop = loop + self._close_loop_on_stop = False + else: + self._loop = asyncio.new_event_loop() + asyncio.set_event_loop(self._loop) + self._close_loop_on_stop = True self._scan_coros: list[ScanCallback] = [] self._initial_coros: list[ScanCallback] = [] @@ -158,3 +165,5 @@ async def interactive_shell( def __del__(self): self._stop_scan_tasks() + if self._close_loop_on_stop and not self._loop.is_closed(): + self._loop.close()