blob: aed36b6be721f48651491ea628d89a8263bb5505 [file] [log] [blame] [edit]
"""Simple context managers for handling signals."""
from __future__ import absolute_import
import contextlib
import signal
class SigtermException(Exception):
"""Exception for getting a SIGTERM."""
def _sigterm_handler(signum, frame):
del signum, frame # Unused.
raise SigtermException()
@contextlib.contextmanager
def sigterm_handler():
"""A simple handler for SIGTERM."""
old_sigterm_handler = signal.signal(signal.SIGTERM, _sigterm_handler)
try:
yield
finally:
# Reset previous handlers
signal.signal(signal.SIGTERM, old_sigterm_handler)