Skip to content

Commit ea06ae5

Browse files
authored
Fix Queue.shutdown docs for condition to unblock a join (gh-137088)
1 parent d7db0ee commit ea06ae5

File tree

4 files changed

+18
-12
lines changed

4 files changed

+18
-12
lines changed

Doc/library/asyncio-queue.rst

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,10 @@ Queue
120120
raise :exc:`QueueShutDown`.
121121

122122
If *immediate* is true, the queue is terminated immediately.
123-
The queue is drained to be completely empty. All callers of
124-
:meth:`~Queue.join` are unblocked regardless of the number
125-
of unfinished tasks. Blocked callers of :meth:`~Queue.get`
123+
The queue is drained to be completely empty and the count
124+
of unfinished tasks is reduced by the number of tasks drained.
125+
If unfinished tasks is zero, callers of :meth:`~Queue.join`
126+
are unblocked. Also, blocked callers of :meth:`~Queue.get`
126127
are unblocked and will raise :exc:`QueueShutDown` because the
127128
queue is empty.
128129

Doc/library/queue.rst

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -256,9 +256,10 @@ until empty or terminated immediately with a hard shutdown.
256256
raise :exc:`ShutDown`.
257257

258258
If *immediate* is true, the queue is terminated immediately.
259-
The queue is drained to be completely empty. All callers of
260-
:meth:`~Queue.join` are unblocked regardless of the number
261-
of unfinished tasks. Blocked callers of :meth:`~Queue.get`
259+
The queue is drained to be completely empty and the count
260+
of unfinished tasks is reduced by the number of tasks drained.
261+
If unfinished tasks is zero, callers of :meth:`~Queue.join`
262+
are unblocked. Also, blocked callers of :meth:`~Queue.get`
262263
are unblocked and will raise :exc:`ShutDown` because the
263264
queue is empty.
264265

Lib/asyncio/queues.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -253,9 +253,11 @@ def shutdown(self, immediate=False):
253253
By default, gets will only raise once the queue is empty. Set
254254
'immediate' to True to make gets raise immediately instead.
255255
256-
All blocked callers of put() and get() will be unblocked. If
257-
'immediate', unblock callers of join() regardless of the
258-
number of unfinished tasks.
256+
All blocked callers of put() and get() will be unblocked.
257+
258+
If 'immediate', the queue is drained and unfinished tasks
259+
is reduced by the number of drained tasks. If unfinished tasks
260+
is reduced to zero, callers of Queue.join are unblocked.
259261
"""
260262
self._is_shutdown = True
261263
if immediate:

Lib/queue.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -236,9 +236,11 @@ def shutdown(self, immediate=False):
236236
By default, gets will only raise once the queue is empty. Set
237237
'immediate' to True to make gets raise immediately instead.
238238
239-
All blocked callers of put() and get() will be unblocked. If
240-
'immediate', callers of join() are unblocked regardless of
241-
the number of unfinished tasks.
239+
All blocked callers of put() and get() will be unblocked.
240+
241+
If 'immediate', the queue is drained and unfinished tasks
242+
is reduced by the number of drained tasks. If unfinished tasks
243+
is reduced to zero, callers of Queue.join are unblocked.
242244
'''
243245
with self.mutex:
244246
self.is_shutdown = True

0 commit comments

Comments
 (0)