diff --git a/timmy/nodes.py b/timmy/nodes.py index 57eb643..767c14d 100644 --- a/timmy/nodes.py +++ b/timmy/nodes.py @@ -501,8 +501,10 @@ class Nodes(object): 'odir': odir, 'fake': fake}, key=key)) - self.nodes = tools.run_batch(run_items, 100, dict_result=True) - lock.unlock() + try: + self.nodes = tools.run_batch(run_items, 100, dict_result=True) + finally: + lock.unlock() def calculate_log_size(self, timeout=15): total_size = 0 diff --git a/timmy/tools.py b/timmy/tools.py index d848717..33e773b 100644 --- a/timmy/tools.py +++ b/timmy/tools.py @@ -67,7 +67,9 @@ class SemaphoreProcess(Process): def run(self): try: - self.queue.put_nowait(self.target(**self.args)) + result = self.target(**self.args) + if self.queue: + self.queue.put_nowait(result) finally: logging.debug('finished call: %s' % self.target) self.semaphore.release()