signals.py 873 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import signal
  2. from ..const import IS_WINDOWS_PLATFORM
  3. class ShutdownException(Exception):
  4. pass
  5. class HangUpException(Exception):
  6. pass
  7. def shutdown(signal, frame):
  8. raise ShutdownException()
  9. def set_signal_handler(handler):
  10. signal.signal(signal.SIGINT, handler)
  11. signal.signal(signal.SIGTERM, handler)
  12. def set_signal_handler_to_shutdown():
  13. set_signal_handler(shutdown)
  14. def hang_up(signal, frame):
  15. raise HangUpException()
  16. def set_signal_handler_to_hang_up():
  17. # on Windows a ValueError will be raised if trying to set signal handler for SIGHUP
  18. if not IS_WINDOWS_PLATFORM:
  19. signal.signal(signal.SIGHUP, hang_up)
  20. def ignore_sigpipe():
  21. # Restore default behavior for SIGPIPE instead of raising
  22. # an exception when encountered.
  23. if not IS_WINDOWS_PLATFORM:
  24. signal.signal(signal.SIGPIPE, signal.SIG_DFL)