diff options
Diffstat (limited to 'kazoo/handlers/gevent.py')
-rw-r--r-- | kazoo/handlers/gevent.py | 15 |
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): |