summaryrefslogtreecommitdiff
path: root/kazoo/handlers/gevent.py
diff options
context:
space:
mode:
Diffstat (limited to 'kazoo/handlers/gevent.py')
-rw-r--r--kazoo/handlers/gevent.py15
1 files changed, 9 insertions, 6 deletions
diff --git a/kazoo/handlers/gevent.py b/kazoo/handlers/gevent.py
index bc721d9..78d234d 100644
--- a/kazoo/handlers/gevent.py
+++ b/kazoo/handlers/gevent.py
@@ -69,14 +69,17 @@ class SequentialGeventHandler(object):
while True:
try:
func = queue.get()
- if func is _STOP:
- break
- func()
+ try:
+ if func is _STOP:
+ break
+ func()
+ except Exception as exc:
+ log.warning("Exception in worker greenlet")
+ log.exception(exc)
+ finally:
+ del func # release before possible idle
except self.queue_empty:
continue
- except Exception as exc:
- log.warning("Exception in worker greenlet")
- log.exception(exc)
return gevent.spawn(greenlet_worker)
def start(self):