| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 | from __future__ import absolute_importfrom __future__ import unicode_literalsimport signalfrom ..const import IS_WINDOWS_PLATFORMclass ShutdownException(Exception):    passclass HangUpException(Exception):    passdef shutdown(signal, frame):    raise ShutdownException()def set_signal_handler(handler):    signal.signal(signal.SIGINT, handler)    signal.signal(signal.SIGTERM, handler)def set_signal_handler_to_shutdown():    set_signal_handler(shutdown)def hang_up(signal, frame):    raise HangUpException()def set_signal_handler_to_hang_up():    # on Windows a ValueError will be raised if trying to set signal handler for SIGHUP    if not IS_WINDOWS_PLATFORM:        signal.signal(signal.SIGHUP, hang_up)def ignore_sigpipe():    # Restore default behavior for SIGPIPE instead of raising    # an exception when encountered.    if not IS_WINDOWS_PLATFORM:        signal.signal(signal.SIGPIPE, signal.SIG_DFL)
 |