Skip to content

Commit 983efcf

Browse files
authored
gh-119819: Update logging configuration to support joinable multiproc… (GH-120090)
gh-119819: Update logging configuration to support joinable multiprocessing manager queues.
1 parent b6b0dcb commit 983efcf

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

Lib/logging/config.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -783,8 +783,10 @@ def configure_handler(self, config):
783783
from multiprocessing.queues import Queue as MPQueue
784784
from multiprocessing import Manager as MM
785785
proxy_queue = MM().Queue()
786+
proxy_joinable_queue = MM().JoinableQueue()
786787
qspec = config['queue']
787-
if not isinstance(qspec, (queue.Queue, MPQueue, type(proxy_queue))):
788+
if not isinstance(qspec, (queue.Queue, MPQueue,
789+
type(proxy_queue), type(proxy_joinable_queue))):
788790
if isinstance(qspec, str):
789791
q = self.resolve(qspec)
790792
if not callable(q):

Lib/test/test_logging.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3928,12 +3928,16 @@ def test_config_queue_handler(self):
39283928

39293929
def test_multiprocessing_queues(self):
39303930
# See gh-119819
3931-
import_helper.import_module('_multiprocessing') # will skip test if it's not available
3931+
3932+
# will skip test if it's not available
3933+
import_helper.import_module('_multiprocessing')
3934+
39323935
cd = copy.deepcopy(self.config_queue_handler)
39333936
from multiprocessing import Queue as MQ, Manager as MM
39343937
q1 = MQ() # this can't be pickled
39353938
q2 = MM().Queue() # a proxy queue for use when pickling is needed
3936-
for qspec in (q1, q2):
3939+
q3 = MM().JoinableQueue() # a joinable proxy queue
3940+
for qspec in (q1, q2, q3):
39373941
fn = make_temp_file('.log', 'test_logging-cmpqh-')
39383942
cd['handlers']['h1']['filename'] = fn
39393943
cd['handlers']['ah']['queue'] = qspec

0 commit comments

Comments
 (0)