Add methods to switch off signals handling in JCLComponent

darcs-hash:20080904193918-86b55-2aac67792d9aa49ec5746ba594acf1cf61096212.gz
This commit is contained in:
David Rousselie
2008-09-04 21:39:18 +02:00
parent b4b2f86a9d
commit 57dfbfeb2b
2 changed files with 18 additions and 4 deletions

View File

@@ -655,8 +655,8 @@ class JCLComponent(Component, object):
self._restart = False
self.last_activity = int(time.time())
signal.signal(signal.SIGINT, self.signal_handler)
signal.signal(signal.SIGTERM, self.signal_handler)
self.signals_enabled = False
self.enable_signals()
def run(self):
"""
@@ -688,8 +688,7 @@ class JCLComponent(Component, object):
self.__logger.info("Connection failed, restarting.")
return (True, 5)
finally:
signal.signal(signal.SIGINT, signal.default_int_handler)
signal.signal(signal.SIGTERM, signal.default_int_handler)
self.disable_signals()
if not self.running:
self._restart = False
wait_before_restart = 0
@@ -706,6 +705,20 @@ class JCLComponent(Component, object):
self.__logger.debug("Exitting normally")
return (self._restart, wait_before_restart)
def enable_signals(self):
"""Enable signals"""
if not self.signals_enabled:
self.signals_enabled = True
signal.signal(signal.SIGINT, signal.default_int_handler)
signal.signal(signal.SIGTERM, signal.default_int_handler)
def disable_signals(self):
"""Enable signals"""
if self.signals_enabled:
self.signals_enabled = False
signal.signal(signal.SIGINT, signal.default_int_handler)
signal.signal(signal.SIGTERM, signal.default_int_handler)
def _get_restart(self):
return self._restart

View File

@@ -68,6 +68,7 @@ class FeederComponent_TestCase(JCLComponent_TestCase):
self.comp.handle_tick = end_run
self.comp.stream = MockStream()
self.comp.stream_class = MockStream
self.comp.disable_signals()
run_thread = threading.Thread(target=self.comp.run,
name="run_thread")
run_thread.start()