try except question - serious foo bar question, and pulling my hair

L

Laszlo Nagy

Given this class below:

import Queue
import threading
from sorb.util.dumpexc import dumpexc
import waitablemixin


PREFETCH_SIZE = 10

class Feeder(threading.Thread,waitablemixin.WaitableMixin):
def __init__(self,connection_manager):
self.cm = connection_manager
self.expired_asins = Queue.Queue()
self.logger = self.cm.loggerfactory.get_logger("feeder")
threading.Thread.__init__(self)

def run(self):
try:
try:
d = self.cm.create_dispatcher()
try:
od_producer = d.locate('od_producer')
while not self.cm.stop_requested.isSet():
try:
items = od_producer.getsomeasins()
if items:
self.logger.info("Got %d items to
process",len(items))
for item in items:
self.expired_asins.put(item)
if self.expired_asins.qsize()>PREFETCH_SIZE:
while
(self.expired_asins.qsize()>PREFETCH_SIZE) and \
not self.cm.stop_requested.isSet():
self.logger.info(
"%s (>%s) items in the
queue, waiting...",
self.expired_asins.qsize(),
PREFETCH_SIZE
)
self.waitsome(1)
else:
self.logger.info("No more items to
process, will wait 5 minutes.")
self.waitsome(5*60)
except Exception,e:
self.logger.error("Could not get asins:
%s",dumpexc(e) )
self.logger.error("Will retry in 10 seconds.")
self.waitsome(10)
finally:
d.close()
except Exception,e:
self.cm.stop_requested.set()
self.logger.error(dumpexc(e))
finally:
self.logger.error("Feeder stopped. stop_requested =
%s",str(self.cm.stop_requested.isSet()))


How in the hell can I get the following log output:

2009-02-24 11:42:14,696 INFO .feeder Got 5 items to process
2009-02-24 11:42:14,732 INFO .feeder Got 5 items to process
2009-02-24 11:42:14,733 INFO .feeder 15 (>10) items in the queue, waiting...
2009-02-24 11:42:15,740 INFO .feeder 15 (>10) items in the queue, waiting...
2009-02-24 11:42:16,965 ERROR .feeder Feeder stopped. stop_requested = False

It seems impossible to me. The while loop should only exit if
stop_requested becomes set, OR if an exception is raised. However, all
exceptions are cought and logged. But there are no exceptions logged.
And stop_requested is NOT SET. (see the last line in the log).

What is happening here?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,001
Messages
2,570,254
Members
46,849
Latest member
Fira

Latest Threads

Top