diff --git a/src/pyra/daemon/core.py b/src/pyra/daemon/core.py index ae8115d..894ea6f 100644 --- a/src/pyra/daemon/core.py +++ b/src/pyra/daemon/core.py @@ -144,6 +144,9 @@ def _make_ipc_handler(supervisor: PluginSupervisor): async def _run_daemon(cfg, supervisor: PluginSupervisor) -> None: from pyra.daemon.ipc import IpcServer, get_socket_path, is_unix_socket + # Install signal handlers now that the event loop is running. + _install_signal_handlers(supervisor) + if is_unix_socket(): address = get_socket_path(cfg.daemon.socket_path) else: @@ -194,7 +197,6 @@ def run_foreground() -> None: _start_time = time.monotonic() with pid_file: - _install_signal_handlers(supervisor) _log.info("Pyra daemon starting (PID %d).", os.getpid()) try: asyncio.run(_run_daemon(cfg, supervisor)) @@ -266,7 +268,7 @@ def _install_signal_handlers(supervisor: PluginSupervisor) -> None: signal.signal(signal.SIGTERM, lambda *_: supervisor.request_shutdown()) return - loop = asyncio.get_event_loop() + loop = asyncio.get_running_loop() loop.add_signal_handler(signal.SIGTERM, supervisor.request_shutdown) loop.add_signal_handler(signal.SIGHUP, supervisor.request_shutdown)