mirror of https://github.com/python/cpython
[3.13] gh-119819: Update logging configuration to support joinable multiproc… (GH-120090) (GH-120093)
(cherry picked from commit 983efcf15b
)
This commit is contained in:
parent
df8a98abee
commit
71f86eedeb
|
@ -783,8 +783,10 @@ class DictConfigurator(BaseConfigurator):
|
||||||
from multiprocessing.queues import Queue as MPQueue
|
from multiprocessing.queues import Queue as MPQueue
|
||||||
from multiprocessing import Manager as MM
|
from multiprocessing import Manager as MM
|
||||||
proxy_queue = MM().Queue()
|
proxy_queue = MM().Queue()
|
||||||
|
proxy_joinable_queue = MM().JoinableQueue()
|
||||||
qspec = config['queue']
|
qspec = config['queue']
|
||||||
if not isinstance(qspec, (queue.Queue, MPQueue, type(proxy_queue))):
|
if not isinstance(qspec, (queue.Queue, MPQueue,
|
||||||
|
type(proxy_queue), type(proxy_joinable_queue))):
|
||||||
if isinstance(qspec, str):
|
if isinstance(qspec, str):
|
||||||
q = self.resolve(qspec)
|
q = self.resolve(qspec)
|
||||||
if not callable(q):
|
if not callable(q):
|
||||||
|
|
|
@ -3928,12 +3928,16 @@ class ConfigDictTest(BaseTest):
|
||||||
|
|
||||||
def test_multiprocessing_queues(self):
|
def test_multiprocessing_queues(self):
|
||||||
# See gh-119819
|
# See gh-119819
|
||||||
import_helper.import_module('_multiprocessing') # will skip test if it's not available
|
|
||||||
|
# will skip test if it's not available
|
||||||
|
import_helper.import_module('_multiprocessing')
|
||||||
|
|
||||||
cd = copy.deepcopy(self.config_queue_handler)
|
cd = copy.deepcopy(self.config_queue_handler)
|
||||||
from multiprocessing import Queue as MQ, Manager as MM
|
from multiprocessing import Queue as MQ, Manager as MM
|
||||||
q1 = MQ() # this can't be pickled
|
q1 = MQ() # this can't be pickled
|
||||||
q2 = MM().Queue() # a proxy queue for use when pickling is needed
|
q2 = MM().Queue() # a proxy queue for use when pickling is needed
|
||||||
for qspec in (q1, q2):
|
q3 = MM().JoinableQueue() # a joinable proxy queue
|
||||||
|
for qspec in (q1, q2, q3):
|
||||||
fn = make_temp_file('.log', 'test_logging-cmpqh-')
|
fn = make_temp_file('.log', 'test_logging-cmpqh-')
|
||||||
cd['handlers']['h1']['filename'] = fn
|
cd['handlers']['h1']['filename'] = fn
|
||||||
cd['handlers']['ah']['queue'] = qspec
|
cd['handlers']['ah']['queue'] = qspec
|
||||||
|
|
Loading…
Reference in New Issue