From 8e83725fb23836c6a77e4d1d61116f8a87334fc3 Mon Sep 17 00:00:00 2001 From: SethMichaelLarson Date: Sat, 31 Mar 2018 14:52:30 -0500 Subject: [PATCH] Switch to deque LifoQueue --- urllib3/connectionpool.py | 8 ++------ urllib3/util/queue.py | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 urllib3/util/queue.py diff --git a/urllib3/connectionpool.py b/urllib3/connectionpool.py index b7b757dd00..0b38963a6f 100644 --- a/urllib3/connectionpool.py +++ b/urllib3/connectionpool.py @@ -41,11 +41,7 @@ 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: diff --git a/urllib3/util/queue.py b/urllib3/util/queue.py new file mode 100644 index 0000000000..d3d379a199 --- /dev/null +++ b/urllib3/util/queue.py @@ -0,0 +1,21 @@ +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()