def register_signals(_stop_handler):
"""
Register a callback to gracefully handle the system being externally shut down (terminated)
:param _stop_handler: A callback that helps the system shut down gracefully.
"""
if _stop_handler:
global stop_handler
stop_handler = _stop_handler
else:
raise Exception("No stop handler, probably an internal error, needed for graceful shut down.")
if os.name == "nt":
try:
import win32api
except ImportError:
version = ".".join(map(str, sys.version_info[:2]))
raise Exception("pywin32 not installed for Python " + version)
else:
win32api.SetConsoleCtrlHandler(signal_handler_windows, True)
write_to_log("Registered win32 ctrl handler", _category=EC_SERVICE, _severity=SEV_INFO)
else:
signal.signal(signal.SIGINT, signal_handler_unix)
signal.signal(signal.SIGTERM, signal_handler_unix)
signal.signal(signal.SIGQUIT, signal_handler_unix)
signal.signal(signal.SIGHUP, signal_handler_unix)
评论列表
文章目录