catch exceptions raised by iterators

This commit is contained in:
Romain Bignon 2010-04-30 17:38:31 +02:00
commit cdfc6882f9

View file

@ -98,12 +98,16 @@ class BackendsCall(object):
if hasattr(r, '__iter__'): if hasattr(r, '__iter__'):
# Loop on iterator # Loop on iterator
for e in r: try:
# Lock mutex only in loop in case the iterator is slow for e in r:
# (for example if backend do some parsing operations) # Lock mutex only in loop in case the iterator is slow
# (for example if backend do some parsing operations)
with self.mutex:
self.responses.append((b,e))
self.response_event.set()
except Exception, e:
with self.mutex: with self.mutex:
self.responses.append((b,e)) self.errors.append((b, e))
self.response_event.set()
else: else:
with self.mutex: with self.mutex:
self.responses.append((b,r)) self.responses.append((b,r))