equal
deleted
inserted
replaced
18 """Some utilities for the CubicWeb server.""" |
18 """Some utilities for the CubicWeb server.""" |
19 __docformat__ = "restructuredtext en" |
19 __docformat__ = "restructuredtext en" |
20 |
20 |
21 import sys |
21 import sys |
22 import string |
22 import string |
|
23 import logging |
23 from threading import Timer, Thread |
24 from threading import Timer, Thread |
24 from getpass import getpass |
25 from getpass import getpass |
25 from random import choice |
26 from random import choice |
26 |
27 |
27 from cubicweb.server import SOURCE_TYPES |
28 from cubicweb.server import SOURCE_TYPES |
127 (interval, func_name(func))) |
128 (interval, func_name(func))) |
128 self.interval = interval |
129 self.interval = interval |
129 def auto_restart_func(self=self, func=func, args=args): |
130 def auto_restart_func(self=self, func=func, args=args): |
130 try: |
131 try: |
131 func(*args) |
132 func(*args) |
|
133 except: |
|
134 logger = logging.getLogger('cubicweb.repository') |
|
135 logger.exception('Unhandled exception in LoopTask %s', self.name) |
|
136 raise |
132 finally: |
137 finally: |
133 self.start() |
138 self.start() |
134 self.func = auto_restart_func |
139 self.func = auto_restart_func |
135 self.name = func_name(func) |
140 self.name = func_name(func) |
136 |
141 |
156 """ |
161 """ |
157 def __init__(self, target, running_threads): |
162 def __init__(self, target, running_threads): |
158 def auto_remove_func(self=self, func=target): |
163 def auto_remove_func(self=self, func=target): |
159 try: |
164 try: |
160 func() |
165 func() |
|
166 except: |
|
167 logger = logging.getLogger('cubicweb.repository') |
|
168 logger.exception('Unhandled exception in RepoThread %s', self._name) |
|
169 raise |
161 finally: |
170 finally: |
162 self.running_threads.remove(self) |
171 self.running_threads.remove(self) |
163 Thread.__init__(self, target=auto_remove_func) |
172 Thread.__init__(self, target=auto_remove_func) |
164 self.running_threads = running_threads |
173 self.running_threads = running_threads |
165 self._name = func_name(target) |
174 self._name = func_name(target) |