From ebb41da4726e311080e69d1b76d1bc2769897e78 Mon Sep 17 00:00:00 2001 From: Randall Leeds Date: Mon, 20 Apr 2020 13:13:34 -0700 Subject: [PATCH] Make force close on max requests consistent All worker types should force a connection close after a request that exceeds the max requests. A worker only needs to log about the automatic restart once, rather than once for each keepalive request. --- gunicorn/workers/base_async.py | 7 ++++--- gunicorn/workers/gthread.py | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/gunicorn/workers/base_async.py b/gunicorn/workers/base_async.py index 7b2daf91..0aaaa4dd 100644 --- a/gunicorn/workers/base_async.py +++ b/gunicorn/workers/base_async.py @@ -95,10 +95,11 @@ class AsyncWorker(base.Worker): listener_name, self.cfg) environ["wsgi.multithread"] = True self.nr += 1 - if self.alive and self.nr >= self.max_requests: - self.log.info("Autorestarting worker after current request.") + if self.nr >= self.max_requests: + if self.alive: + self.log.info("Autorestarting worker after current request.") + self.alive = False resp.force_close() - self.alive = False if not self.cfg.keepalive: resp.force_close() diff --git a/gunicorn/workers/gthread.py b/gunicorn/workers/gthread.py index 1f1a0057..c7f64b61 100644 --- a/gunicorn/workers/gthread.py +++ b/gunicorn/workers/gthread.py @@ -308,9 +308,10 @@ class ThreadWorker(base.Worker): environ["wsgi.multithread"] = True self.nr += 1 if self.nr >= self.max_requests: - self.log.info("Autorestarting worker after current request.") + if self.alive: + self.log.info("Autorestarting worker after current request.") + self.alive = False resp.force_close() - self.alive = False if not self.cfg.keepalive: resp.force_close()