equal
deleted
inserted
replaced
121 |
121 |
122 |
122 |
123 class LoopTask(object): |
123 class LoopTask(object): |
124 """threaded task restarting itself once executed""" |
124 """threaded task restarting itself once executed""" |
125 def __init__(self, interval, func, args): |
125 def __init__(self, interval, func, args): |
|
126 if interval <= 0: |
|
127 raise ValueError('Loop task interval must be > 0 ' |
|
128 '(current value: %f for %s)' % \ |
|
129 (interval, func.__name__)) |
126 self.interval = interval |
130 self.interval = interval |
127 def auto_restart_func(self=self, func=func, args=args): |
131 def auto_restart_func(self=self, func=func, args=args): |
128 try: |
132 try: |
129 func(*args) |
133 func(*args) |
130 finally: |
134 finally: |
135 def __str__(self): |
139 def __str__(self): |
136 return '%s (%s seconds)' % (self.name, self.interval) |
140 return '%s (%s seconds)' % (self.name, self.interval) |
137 |
141 |
138 def start(self): |
142 def start(self): |
139 self._t = Timer(self.interval, self.func) |
143 self._t = Timer(self.interval, self.func) |
|
144 self._t.setName('%s-%s[%d]' % (self._t.getName(), self.name, self.interval)) |
140 self._t.start() |
145 self._t.start() |
141 |
146 |
142 def cancel(self): |
147 def cancel(self): |
143 self._t.cancel() |
148 self._t.cancel() |
144 |
149 |