Skip to content

multiprocessing.Pool in spawn mode breaks logging.handlers.QueueHandler configuration #121723

Closed
@noreentry

Description

@noreentry

Bug report

Bug description:

multiprocessing.Pool with spawn method breaks logging.handlers.QueueHandler configuration

import logging import logging.config import multiprocessing import time def _init(q): logging.config.dictConfig({ 'version': 1, 'disable_existing_loggers': True, 'handlers': {'log_to_parent': {'class': 'logging.handlers.QueueHandler', 'queue': q}}, 'root': {'handlers': ['log_to_parent'], 'level': 'DEBUG'} }) logging.getLogger().info('log from child') if __name__ == '__main__': multiprocessing.set_start_method('spawn') with multiprocessing.Manager() as manager: # q = manager.Queue() q = multiprocessing.Queue() # listen for log messages from child processes # ... with multiprocessing.Pool(processes=1, maxtasksperchild=1, initializer=_init, initargs=(q,)) as pool: time.sleep(1)

got exception (when q = manager.Queue() or q = multiprocessing.Queue())

Process SpawnPoolWorker-2: Traceback (most recent call last): File "/home/foo/miniconda3/envs/py312forge/lib/python3.12/logging/config.py", line 581, in configure handler = self.configure_handler(handlers[name]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/foo/miniconda3/envs/py312forge/lib/python3.12/logging/config.py", line 792, in configure_handler proxy_queue = MM().Queue() ^^^^ File "/home/foo/miniconda3/envs/py312forge/lib/python3.12/multiprocessing/context.py", line 57, in Manager m.start() File "/home/foo/miniconda3/envs/py312forge/lib/python3.12/multiprocessing/managers.py", line 562, in start self._process.start() File "/home/foo/miniconda3/envs/py312forge/lib/python3.12/multiprocessing/process.py", line 118, in start assert not _current_process._config.get('daemon'), \ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AssertionError: daemonic processes are not allowed to have children The above exception was the direct cause of the following exception: ... 

CPython versions tested on:

3.12

Operating systems tested on:

Linux

Linked PRs

Metadata

Metadata

Assignees

Labels

type-bugAn unexpected behavior, bug, or error

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions