py3k - None is not comparable in 3.x, also queue.resize(None) was not waking queued putters

This commit is contained in:
amajorek
2010-03-07 04:20:35 -05:00
parent 0bd08f5985
commit 01c37d5cb2
2 changed files with 19 additions and 4 deletions

View File

@@ -140,7 +140,7 @@ class LightQueue(object):
"""
def __init__(self, maxsize=None):
if maxsize < 0:
if maxsize is None or maxsize < 0: #None is not comparable in 3.x
self.maxsize = None
else:
self.maxsize = maxsize
@@ -186,7 +186,7 @@ class LightQueue(object):
"""Resizes the queue's maximum size.
If the size is increased, and there are putters waiting, they may be woken up."""
if size > self.maxsize:
if self.maxsize is not None and (size is None or size > self.maxsize): # None is not comparable in 3.x
# Maybe wake some stuff up
self._schedule_unlock()
self.maxsize = size
@@ -210,7 +210,7 @@ class LightQueue(object):
``Queue(None)`` is never full.
"""
return self.qsize() >= self.maxsize
return self.maxsize is not None and self.qsize() >= self.maxsize # None is not comparable in 3.x
def put(self, item, block=True, timeout=None):
"""Put an item into the queue.
@@ -335,7 +335,7 @@ class LightQueue(object):
putter.switch(putter)
else:
self.putters.add(putter)
elif self.putters and (self.getters or self.qsize() < self.maxsize):
elif self.putters and (self.getters or self.maxsize is None or self.qsize() < self.maxsize):
putter = self.putters.pop()
putter.switch(putter)
else:

View File

@@ -95,6 +95,21 @@ class TestQueue(LimitedTestCase):
eventlet.sleep(0)
self.assertEquals(list(q.queue), range(5))
def test_resize_to_Unlimited(self):
q = eventlet.Queue(0)
def sender(evt, q):
q.put('hi')
evt.send('done')
evt = event.Event()
gt = eventlet.spawn(sender, evt, q)
eventlet.sleep()
self.assertFalse(evt.ready())
q.resize(None)
eventlet.sleep()
self.assertTrue(evt.ready())
gt.wait()
def test_multiple_waiters(self):
# tests that multiple waiters get their results back
q = eventlet.Queue()