1 """Signal handling related helpers."""
12 _LOGGER = logging.getLogger(__name__)
14 KEY_HA_STOP: HassKey[asyncio.Task[
None]] =
HassKey(
"homeassistant_stop")
20 """Register system signal handler for core."""
23 def async_signal_handle(exit_code: int) ->
None:
24 """Wrap signal handling.
26 * queue call to shutdown task
27 * re-instate default handler
29 hass.loop.remove_signal_handler(signal.SIGTERM)
30 hass.loop.remove_signal_handler(signal.SIGINT)
31 hass.data[KEY_HA_STOP] = asyncio.create_task(hass.async_stop(exit_code))
34 hass.loop.add_signal_handler(signal.SIGTERM, async_signal_handle, 0)
36 _LOGGER.warning(
"Could not bind to SIGTERM")
39 hass.loop.add_signal_handler(signal.SIGINT, async_signal_handle, 0)
41 _LOGGER.warning(
"Could not bind to SIGINT")
44 hass.loop.add_signal_handler(
45 signal.SIGHUP, async_signal_handle, RESTART_EXIT_CODE
48 _LOGGER.warning(
"Could not bind to SIGHUP")
None async_register_signal_handling(HomeAssistant hass)