diff --git a/gunicorn/workers/ggevent.py b/gunicorn/workers/ggevent.py index a10f044f..e77b05ff 100644 --- a/gunicorn/workers/ggevent.py +++ b/gunicorn/workers/ggevent.py @@ -125,9 +125,15 @@ class GeventBaseWorker(Worker): gevent.sleep(0.1) except KeyboardInterrupt: pass - - with gevent.Timeout(self.timeout, False): - gevent.spawn(server.stop).join() + + server.stop(timeout=self.timeout) + + def handle_request(self, *args): + try: + super(GeventBaseWorker, self).handle_request(*args) + except gevent.GreenletExit: + pass + class WSGIHandler(wsgi.WSGIHandler): def log_request(self, *args):