From 8936d8274770bec5fced09b28eb687b23bef20c1 Mon Sep 17 00:00:00 2001 From: benoitc Date: Fri, 30 Jan 2015 06:53:11 +0100 Subject: [PATCH] clean threads before exiting --- gunicorn/workers/gthread.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/gunicorn/workers/gthread.py b/gunicorn/workers/gthread.py index df60951f..705fc48a 100644 --- a/gunicorn/workers/gthread.py +++ b/gunicorn/workers/gthread.py @@ -100,6 +100,14 @@ class ThreadWorker(base.Worker): self._lock = RLock() super(ThreadWorker, self).init_process() + def handle_quit(self, sig, frame): + self.alive = False + # worker_int callback + self.cfg.worker_int(self) + self.tpool.shutdown(False) + time.sleep(0.1) + sys.exit(0) + def _wrap_future(self, fs, conn): fs.conn = conn self.futures.append(fs) @@ -210,14 +218,12 @@ class ThreadWorker(base.Worker): if not result.done: break - else: [self.futures.remove(f) for f in result.done] self.tpool.shutdown(False) self.poller.close() - def finish_request(self, fs): if fs.cancelled(): fs.conn.close()