Switch to deque LifoQueue
MODIFY
urllib3/connectionpool.py
urllib3/connectionpool.py
@@ -41,11 +41,7 @@ from .util.response import assert_header_parsing
from .util.retry import Retry
from .util.timeout import Timeout
from .util.url import get_host, Url
-
-
-if six.PY2:
- # Queue is imported for side effects on MS Windows
- import Queue as _unused_module_Queue # noqa: F401
+from .util.queue import LifoQueue
xrange = six.moves.xrange
@@ -62,7 +58,7 @@ class ConnectionPool(object):
"""
scheme = None
- QueueCls = queue.LifoQueue
+ QueueCls = LifoQueue
def __init__(self, host, port=None):
if not host:

ADD
urllib3/util/queue.py
+import collections
+from ..packages import six
+from ..packages.six.moves import queue
+
+if six.PY2:
+ # Queue is imported for side effects on MS Windows. See issue #229.
+ import Queue as _unused_module_Queue # noqa: F401
+
+
+class LifoQueue(queue.Queue):
+ def _init(self, _):
+ self.queue = collections.deque()
+
+ def _qsize(self, len=len):
+ return len(self.queue)
+
+ def _put(self, item):
+ self.queue.append(item)
+
+ def _get(self):
+ return self.queue.pop()

Switch to deque LifoQueue (#1356)