core/homeassistant/helpers/signal.py

32 lines
913 B
Python

"""Signal handling related helpers."""
import logging
import signal
import sys
from homeassistant.core import callback
from homeassistant.const import RESTART_EXIT_CODE
_LOGGER = logging.getLogger(__name__)
@callback
def async_register_signal_handling(hass):
"""Register system signal handler for core."""
if sys.platform != 'win32':
@callback
def async_signal_handle(exit_code):
"""Wrap signal handling."""
hass.async_add_job(hass.async_stop(exit_code))
try:
hass.loop.add_signal_handler(
signal.SIGTERM, async_signal_handle, 0)
except ValueError:
_LOGGER.warning("Could not bind to SIGTERM")
try:
hass.loop.add_signal_handler(
signal.SIGHUP, async_signal_handle, RESTART_EXIT_CODE)
except ValueError:
_LOGGER.warning("Could not bind to SIGHUP")