Source code for gaffer.sig_handler

# -*- coding: utf-8 -
#
# This file is part of gaffer. See the NOTICE for more information.

import signal

import pyuv

[docs]class BaseSigHandler(object): """ A simple gaffer application to handle signals """ QUIT_SIGNALS = (signal.SIGQUIT, signal.SIGTERM, signal.SIGINT) def __init__(self): self._sig_handler = None
[docs] def start(self, loop): self.loop = loop need_unref = False if hasattr(pyuv, "SignalChecker"): self._sig_handler = pyuv.SignalChecker(self.loop) else: self._sig_handler = pyuv.Signal(self.loop) need_unref = True # quit signals handling for signum in self.QUIT_SIGNALS: signal.signal(signum, self.handle_quit) # reload signal signal.signal(signal.SIGHUP, self.handle_reload) self._sig_handler.start() if need_unref: self._sig_handler.unref()
[docs] def stop(self): try: self._sig_handler.stop() except: pass
[docs] def restart(self): # we never restart, just return return
[docs] def handle_quit(self, handle, *args): raise NotImplementedError
[docs] def handle_reload(self, handle, *args): raise NotImplementedError
[docs]class SigHandler(BaseSigHandler): """ A simple gaffer application to handle signals """
[docs] def start(self, loop, manager): self.manager = manager super(SigHandler, self).start(loop)
[docs] def handle_quit(self, handle, *args): self.manager.stop()
[docs] def handle_reload(self, handle, *args): self.manager.restart()

This Page