--- queues.py Mon Mar 01 21:43:47 2010 +++ queues_org.py Thu Aug 06 02:08:10 2009 @@ -82,7 +82,6 @@ self._buffer.append(obj) self._notempty.notify() finally: - self._notempty.wait() self._notempty.release() def get(self, block=True, timeout=None): @@ -225,27 +224,26 @@ try: if not buffer: nwait() - try: - while 1: - obj = bpopleft() - if obj is sentinel: - debug('feeder thread got sentinel -- exiting') - close() - return - - if wacquire is None: - send(obj) - else: - wacquire() - try: - send(obj) - finally: - wrelease() - except IndexError: - pass finally: - notempty.notify() nrelease() + try: + while 1: + obj = bpopleft() + if obj is sentinel: + debug('feeder thread got sentinel -- exiting') + close() + return + + if wacquire is None: + send(obj) + else: + wacquire() + try: + send(obj) + finally: + wrelease() + except IndexError: + pass except Exception, e: # Since this runs in a daemon thread the resources it uses # may be become unusable while the process is cleaning up.