equal
deleted
inserted
replaced
126 raise ValueError('Loop task interval must be > 0 ' |
126 raise ValueError('Loop task interval must be > 0 ' |
127 '(current value: %f for %s)' % \ |
127 '(current value: %f for %s)' % \ |
128 (interval, func_name(func))) |
128 (interval, func_name(func))) |
129 self.interval = interval |
129 self.interval = interval |
130 def auto_restart_func(self=self, func=func, args=args): |
130 def auto_restart_func(self=self, func=func, args=args): |
|
131 restart = True |
131 try: |
132 try: |
132 func(*args) |
133 func(*args) |
133 except: |
134 except Exception: |
134 logger = logging.getLogger('cubicweb.repository') |
135 logger = logging.getLogger('cubicweb.repository') |
135 logger.exception('Unhandled exception in LoopTask %s', self.name) |
136 logger.exception('Unhandled exception in LoopTask %s', self.name) |
136 raise |
137 raise |
|
138 except BaseException: |
|
139 restart = False |
137 finally: |
140 finally: |
138 self.start() |
141 if restart: |
|
142 self.start() |
139 self.func = auto_restart_func |
143 self.func = auto_restart_func |
140 self.name = func_name(func) |
144 self.name = func_name(func) |
141 |
145 |
142 def __str__(self): |
146 def __str__(self): |
143 return '%s (%s seconds)' % (self.name, self.interval) |
147 return '%s (%s seconds)' % (self.name, self.interval) |