Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.3k
Closed
Description
Bug report
Bug description:
I think this is related to#119819
importlogging.configfromqueueimportSimpleQueueq=SimpleQueue()config= {'version':1,'handlers': {'sink': {'class':'logging.handlers.QueueHandler','queue':q, }, },'root': {'handlers': ['sink'], },}logging.config.dictConfig(config)
ValueError: Unable to configure handler 'sink'SimpleQueue does not implement the full Queue interfaces thus bothisinstance(obj, queue.Queue) and the queue interface check fails.
Since this has been working on 3.8 - <3.12 I think the queue interface check is checking for methods that are not used at all and should be adjusted accordingly.
Lines 500 to 525 in2518918
| def_is_queue_like_object(obj): | |
| """Check that *obj* implements the Queue API.""" | |
| ifisinstance(obj,queue.Queue): | |
| returnTrue | |
| # defer importing multiprocessing as much as possible | |
| frommultiprocessing.queuesimportQueueasMPQueue | |
| ifisinstance(obj,MPQueue): | |
| returnTrue | |
| # Depending on the multiprocessing start context, we cannot create | |
| # a multiprocessing.managers.BaseManager instance 'mm' to get the | |
| # runtime type of mm.Queue() or mm.JoinableQueue() (see gh-119819). | |
| # | |
| # Since we only need an object implementing the Queue API, we only | |
| # do a protocol check, but we do not use typing.runtime_checkable() | |
| # and typing.Protocol to reduce import time (see gh-121723). | |
| # | |
| # Ideally, we would have wanted to simply use strict type checking | |
| # instead of a protocol-based type checking since the latter does | |
| # not check the method signatures. | |
| queue_interface= [ | |
| 'empty','full','get','get_nowait', | |
| 'put','put_nowait','join','qsize', | |
| 'task_done', | |
| ] | |
| returnall(callable(getattr(obj,method,None)) | |
| formethodinqueue_interface) |
Tested with 3.12.6
CPython versions tested on:
3.12
Operating systems tested on:
Windows
Linked PRs
Metadata
Metadata
Assignees
Labels
Projects
Status
Done