gh-96471: Correct documentation for asyncio queue shutdown (#117621)

This commit is contained in:
Laurie O 2024-04-09 00:50:54 +10:00 committed by GitHub
parent 26a680a585
commit e16062dd34
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 9 additions and 6 deletions

View file

@ -106,9 +106,10 @@ Queue
raise once the queue is empty. Set *immediate* to true to make raise once the queue is empty. Set *immediate* to true to make
:meth:`~Queue.get` raise immediately instead. :meth:`~Queue.get` raise immediately instead.
All blocked callers of :meth:`~Queue.put` will be unblocked. If All blocked callers of :meth:`~Queue.put` and :meth:`~Queue.get`
*immediate* is true, also unblock callers of :meth:`~Queue.get` will be unblocked. If *immediate* is true, a task will be marked
and :meth:`~Queue.join`. as done for each remaining item in the queue, which may unblock
callers of :meth:`~Queue.join`.
.. versionadded:: 3.13 .. versionadded:: 3.13

View file

@ -298,7 +298,7 @@ asyncio
* Add :meth:`asyncio.Queue.shutdown` (along with * Add :meth:`asyncio.Queue.shutdown` (along with
:exc:`asyncio.QueueShutDown`) for queue termination. :exc:`asyncio.QueueShutDown`) for queue termination.
(Contributed by Laurie Opperman in :gh:`104228`.) (Contributed by Laurie Opperman and Yves Duprat in :gh:`104228`.)
base64 base64
------ ------

View file

@ -256,8 +256,9 @@ class Queue(mixins._LoopBoundMixin):
By default, gets will only raise once the queue is empty. Set By default, gets will only raise once the queue is empty. Set
'immediate' to True to make gets raise immediately instead. 'immediate' to True to make gets raise immediately instead.
All blocked callers of put() will be unblocked, and also get() All blocked callers of put() and get() will be unblocked. If
and join() if 'immediate'. 'immediate', a task is marked as done for each item remaining in
the queue, which may unblock callers of join().
""" """
self._is_shutdown = True self._is_shutdown = True
if immediate: if immediate:
@ -267,6 +268,7 @@ class Queue(mixins._LoopBoundMixin):
self._unfinished_tasks -= 1 self._unfinished_tasks -= 1
if self._unfinished_tasks == 0: if self._unfinished_tasks == 0:
self._finished.set() self._finished.set()
# All getters need to re-check queue-empty to raise ShutDown
while self._getters: while self._getters:
getter = self._getters.popleft() getter = self._getters.popleft()
if not getter.done(): if not getter.done():