]> granicus.if.org Git - python/commitdiff
bpo-30595: Fix multiprocessing.Queue.get(timeout) (#2027)
authorVictor Stinner <victor.stinner@gmail.com>
Sat, 10 Jun 2017 11:10:13 +0000 (13:10 +0200)
committerGitHub <noreply@github.com>
Sat, 10 Jun 2017 11:10:13 +0000 (13:10 +0200)
multiprocessing.Queue.get() with a timeout now polls its reader in
non-blocking mode if it succeeded to aquire the lock but the acquire
took longer than the timeout.

Co-Authored-By: Grzegorz Grzywacz <grzgrzgrz3@gmail.com>
Lib/multiprocessing/queues.py
Misc/NEWS

index 7f77837a74acb6809e248f253f26a32a216c60e5..90844fed158c6d0ee5e12e486b0d727a6876ffb9 100644 (file)
@@ -101,7 +101,7 @@ class Queue(object):
             try:
                 if block:
                     timeout = deadline - time.time()
-                    if timeout < 0 or not self._poll(timeout):
+                    if not self._poll(timeout):
                         raise Empty
                 elif not self._poll():
                     raise Empty
index 6f56fe0583a65f2af9e58137eda25e04dd876dc1..185ec0ed866b20100cc1ec623b1bab66b2be5e97 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -350,10 +350,14 @@ Extension Modules
 Library
 -------
 
+- bpo-30595: multiprocessing.Queue.get() with a timeout now polls its reader in
+  non-blocking mode if it succeeded to aquire the lock but the acquire took
+  longer than the timeout.
+
 - bpo-30605: re.compile() no longer raises a BytesWarning when compiling a
   bytes instance with misplaced inline modifier.  Patch by Roy Williams.
 
-- bpo-29870: Fix ssl sockets leaks when connection is aborted in asyncio/ssl 
+- bpo-29870: Fix ssl sockets leaks when connection is aborted in asyncio/ssl
   implementation. Patch by Michaël Sghaïer.
 
 - bpo-29743: Closing transport during handshake process leaks open socket.