Make loggers function atomic

Fixes https://github.com/benoitc/gunicorn/issues/2784:
```
Traceback (most recent call last):
  File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.7/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker
    worker.init_process()
  File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.7/site-packages/uvicorn/workers.py", line 66, in init_process
    super(UvicornWorker, self).init_process()
  File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.7/site-packages/gunicorn/workers/base.py", line 116, in init_process
    self.log.close_on_exec()
  File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.7/site-packages/gunicorn/glogging.py", line 381, in close_on_exec
    for log in loggers():
  File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.7/site-packages/gunicorn/glogging.py", line 94, in loggers
    return [logging.getLogger(name) for name in existing]
  File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.7/site-packages/gunicorn/glogging.py", line 94, in <listcomp>
    return [logging.getLogger(name) for name in existing]
RuntimeError: dictionary changed size during iteration
```
This commit is contained in:
mvdbeek 2022-04-22 15:33:11 +02:00
parent 1aae54a8e1
commit f186fa3a27
No known key found for this signature in database
GPG Key ID: 3E545398EEA6F8A7

View File

@ -90,7 +90,7 @@ CONFIG_DEFAULTS = dict(
def loggers():
""" get list of all loggers """
root = logging.root
existing = root.manager.loggerDict.keys()
existing = list(root.manager.loggerDict.keys())
return [logging.getLogger(name) for name in existing]