From 72e70e2ec61c7e4fbeefb145c2295df935bce088 Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Thu, 20 May 2010 19:41:09 +0200 Subject: [PATCH] ability to SIGINT/SIGTERM process (and be sure that any tasks are finished) --- weboob/scheduler.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/weboob/scheduler.py b/weboob/scheduler.py index b09dff72..2df31069 100644 --- a/weboob/scheduler.py +++ b/weboob/scheduler.py @@ -51,11 +51,27 @@ class Scheduler(IScheduler): return self.count def repeat(self, interval, function, *args): + if self.stop_event.isSet(): + return + function(*args) return self.schedule(interval, self._repeated_cb, interval, function, args) + def _wait_to_stop(self): + self.want_stop() + for e in self.queue.itervalues(): + e.cancel() + e.join() + def run(self): - self.stop_event.wait() + try: + while 1: + self.stop_event.wait(0.1) + except KeyboardInterrupt: + self._wait_to_stop() + raise + else: + self._wait_to_stop() return True def want_stop(self):