diff --git a/python_apps/media-monitor2/media/monitor/toucher.py b/python_apps/media-monitor2/media/monitor/toucher.py index cd20a21f0..d94fd34f8 100644 --- a/python_apps/media-monitor2/media/monitor/toucher.py +++ b/python_apps/media-monitor2/media/monitor/toucher.py @@ -3,6 +3,7 @@ import media.monitor.pure as mmp import os from media.monitor.log import Loggable from media.monitor.exceptions import CouldNotCreateIndexFile +from media.saas.thread import InstanceInheritingThread class Toucher(Loggable): """ @@ -17,56 +18,23 @@ class Toucher(Loggable): self.path) self.logger.info(str(e)) -#http://code.activestate.com/lists/python-ideas/8982/ -from datetime import datetime +import time -import threading - -class RepeatTimer(threading.Thread): - def __init__(self, interval, callable, args=[], kwargs={}): - threading.Thread.__init__(self) - # interval_current shows number of milliseconds in currently triggered - # - self.interval_current = interval - # interval_new shows number of milliseconds for next - self.interval_new = interval +class RepeatTimer(InstanceInheritingThread): + def __init__(self, interval, callable, *args, **kwargs): + super(RepeatTimer, self).__init__() + self.interval = interval self.callable = callable self.args = args self.kwargs = kwargs - self.event = threading.Event() - self.event.set() - self.activation_dt = None - self.__timer = None - def run(self): - while self.event.is_set(): - self.activation_dt = datetime.utcnow() - self.__timer = threading.Timer(self.interval_new, - self.callable, - self.args, - self.kwargs) - self.interval_current = self.interval_new - self.__timer.start() - self.__timer.join() - - def cancel(self): - self.event.clear() - if self.__timer is not None: - self.__timer.cancel() - - def trigger(self): - self.callable(*self.args, **self.kwargs) - if self.__timer is not None: - self.__timer.cancel() - - def change_interval(self, value): - self.interval_new = value - + while True: + time.sleep(self.interval) + self.callable(*self.args, **self.kwargs) class ToucherThread(Loggable): - """ - Creates a thread that touches a file 'path' every 'interval' seconds - """ + """ Creates a thread that touches a file 'path' every 'interval' + seconds """ def __init__(self, path, interval=5): if not os.path.exists(path): try: