diff --git a/gunicorn/ctl/server.py b/gunicorn/ctl/server.py index 8b32a5ab..0fd24ee3 100644 --- a/gunicorn/ctl/server.py +++ b/gunicorn/ctl/server.py @@ -31,15 +31,14 @@ from gunicorn.ctl.protocol import ( # Module-level tracking of active control server instances for fork handling. # This is necessary because os.register_at_fork() callbacks are process-level. _active_servers = set() -_fork_handlers_registered = False +_module_state = {"fork_handlers_registered": False} def _register_fork_handlers(): """Register fork handlers once at module level.""" - global _fork_handlers_registered - if _fork_handlers_registered: + if _module_state["fork_handlers_registered"]: return - _fork_handlers_registered = True + _module_state["fork_handlers_registered"] = True os.register_at_fork( before=_before_fork, diff --git a/gunicorn/workers/gtornado.py b/gunicorn/workers/gtornado.py index 2c4b5c58..fc75fc2d 100644 --- a/gunicorn/workers/gtornado.py +++ b/gunicorn/workers/gtornado.py @@ -98,10 +98,12 @@ class TornadoWorker(Worker): not isinstance(app, tornado.web.Application): app = WSGIContainer(app) + worker = self + class _HTTPServer(tornado.httpserver.HTTPServer): - def on_close(instance, server_conn): - self.handle_request() + def on_close(self, server_conn): + worker.handle_request() super().on_close(server_conn) if self.cfg.is_ssl: