changed implementation of timer thread because using threading.Timer does not allow us to properly inject
the AirtimeInstance object.
This commit is contained in:
parent
95e757a52c
commit
383244f962
|
@ -3,6 +3,7 @@ import media.monitor.pure as mmp
|
||||||
import os
|
import os
|
||||||
from media.monitor.log import Loggable
|
from media.monitor.log import Loggable
|
||||||
from media.monitor.exceptions import CouldNotCreateIndexFile
|
from media.monitor.exceptions import CouldNotCreateIndexFile
|
||||||
|
from media.saas.thread import InstanceInheritingThread
|
||||||
|
|
||||||
class Toucher(Loggable):
|
class Toucher(Loggable):
|
||||||
"""
|
"""
|
||||||
|
@ -17,56 +18,23 @@ class Toucher(Loggable):
|
||||||
self.path)
|
self.path)
|
||||||
self.logger.info(str(e))
|
self.logger.info(str(e))
|
||||||
|
|
||||||
#http://code.activestate.com/lists/python-ideas/8982/
|
import time
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
import threading
|
class RepeatTimer(InstanceInheritingThread):
|
||||||
|
def __init__(self, interval, callable, *args, **kwargs):
|
||||||
class RepeatTimer(threading.Thread):
|
super(RepeatTimer, self).__init__()
|
||||||
def __init__(self, interval, callable, args=[], kwargs={}):
|
self.interval = interval
|
||||||
threading.Thread.__init__(self)
|
|
||||||
# interval_current shows number of milliseconds in currently triggered
|
|
||||||
# <tick>
|
|
||||||
self.interval_current = interval
|
|
||||||
# interval_new shows number of milliseconds for next <tick>
|
|
||||||
self.interval_new = interval
|
|
||||||
self.callable = callable
|
self.callable = callable
|
||||||
self.args = args
|
self.args = args
|
||||||
self.kwargs = kwargs
|
self.kwargs = kwargs
|
||||||
self.event = threading.Event()
|
|
||||||
self.event.set()
|
|
||||||
self.activation_dt = None
|
|
||||||
self.__timer = None
|
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
while self.event.is_set():
|
while True:
|
||||||
self.activation_dt = datetime.utcnow()
|
time.sleep(self.interval)
|
||||||
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)
|
self.callable(*self.args, **self.kwargs)
|
||||||
if self.__timer is not None:
|
|
||||||
self.__timer.cancel()
|
|
||||||
|
|
||||||
def change_interval(self, value):
|
|
||||||
self.interval_new = value
|
|
||||||
|
|
||||||
|
|
||||||
class ToucherThread(Loggable):
|
class ToucherThread(Loggable):
|
||||||
"""
|
""" Creates a thread that touches a file 'path' every 'interval'
|
||||||
Creates a thread that touches a file 'path' every 'interval' seconds
|
seconds """
|
||||||
"""
|
|
||||||
def __init__(self, path, interval=5):
|
def __init__(self, path, interval=5):
|
||||||
if not os.path.exists(path):
|
if not os.path.exists(path):
|
||||||
try:
|
try:
|
||||||
|
|
Loading…
Reference in New Issue