From ca2ce2c76b1431d4c78c1cc4028b2e998e99fdda Mon Sep 17 00:00:00 2001 From: Odysseas Fatouros Date: Fri, 13 Oct 2023 16:15:40 +0200 Subject: [PATCH] Fix for issue #3079, worker_class parameter accepts a class --- gunicorn/config.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/gunicorn/config.py b/gunicorn/config.py index 84e7619e..9903495e 100644 --- a/gunicorn/config.py +++ b/gunicorn/config.py @@ -103,18 +103,20 @@ class Config(object): def worker_class_str(self): uri = self.settings['worker_class'].get() - # are we using a threaded worker? - is_sync = uri.endswith('SyncWorker') or uri == 'sync' - if is_sync and self.threads > 1: - return "gthread" - return uri + if isinstance(uri, str): + # are we using a threaded worker? + is_sync = uri.endswith('SyncWorker') or uri == 'sync' + if is_sync and self.threads > 1: + return "gthread" + return uri + return uri.__name__ @property def worker_class(self): uri = self.settings['worker_class'].get() # are we using a threaded worker? - is_sync = uri.endswith('SyncWorker') or uri == 'sync' + is_sync = isinstance(uri, str) and (uri.endswith('SyncWorker') or uri == 'sync') if is_sync and self.threads > 1: uri = "gunicorn.workers.gthread.ThreadWorker"