gh-91555: add warning to docs about possibility of deadlock/infinite recursion (GH-135954)

* gh-91555: add warning to docs about possibility of deadlock/infinite recursion

Attempt to clarify in the documentation that care must be taken when using
multiprocessing classes to implement logging since they have builtin internal
logging, and hence may cause deadlock/infinite recursion.

* Update Doc/library/logging.handlers.rst

Co-authored-by: Vinay Sajip <vinay_sajip@yahoo.co.uk>

* Change whitespace.

---------

Co-authored-by: Vinay Sajip <vinay_sajip@yahoo.co.uk>
This commit is contained in:
Duane Griffin 2025-06-27 02:18:32 +12:00 committed by GitHub
parent 0d76dccc3b
commit a4625d597f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1059,6 +1059,15 @@ possible, while any potentially slow operations (such as sending an email via
.. note:: If you are using :mod:`multiprocessing`, you should avoid using
:class:`~queue.SimpleQueue` and instead use :class:`multiprocessing.Queue`.
.. warning::
The :mod:`multiprocessing` module uses an internal logger created and
accessed via :meth:`~multiprocessing.get_logger`.
:class:`multiprocessing.Queue` will log ``DEBUG`` level messages upon
items being queued. If those log messages are processed by a
:class:`QueueHandler` using the same :class:`multiprocessing.Queue` instance,
it will cause a deadlock or infinite recursion.
.. method:: emit(record)
Enqueues the result of preparing the LogRecord. Should an exception