From 62f6fb2d33182d985229d873c597ecbaa9801662 Mon Sep 17 00:00:00 2001 From: bninja Date: Thu, 13 Mar 2014 22:52:41 -0700 Subject: [PATCH] save listener socket name so we can handle buffered keep-alive requests *after* listener has been closed (i.e. stopped accepting during worker teardown) --- gunicorn/workers/async.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gunicorn/workers/async.py b/gunicorn/workers/async.py index 29b79578..9351b999 100644 --- a/gunicorn/workers/async.py +++ b/gunicorn/workers/async.py @@ -32,9 +32,10 @@ class AsyncWorker(base.Worker): try: parser = http.RequestParser(self.cfg, client) try: + listener_name = listener.getsockname() if not self.cfg.keepalive: req = six.next(parser) - self.handle_request(listener, req, client, addr) + self.handle_request(listener_name, req, client, addr) else: # keepalive loop while True: @@ -78,14 +79,14 @@ class AsyncWorker(base.Worker): finally: util.close(client) - def handle_request(self, listener, req, sock, addr): + def handle_request(self, listener_name, req, sock, addr): request_start = datetime.now() environ = {} resp = None try: self.cfg.pre_request(self, req) resp, environ = wsgi.create(req, sock, addr, - listener.getsockname(), self.cfg) + listener_name, self.cfg) environ["wsgi.multithread"] = True self.nr += 1 if self.alive and self.nr >= self.max_requests: