def process_messages(self, messages):
greenlet_to_message = {}
processed = []
self.logger.debug('processesing %d messages', len(messages))
for message in messages:
try:
g = self.pool.spawn(self.func, message)
except:
self.logger.exception('cannot submit jobs to pool')
raise
greenlet_to_message[g] = message
for g in gevent.iwait(greenlet_to_message):
message = greenlet_to_message.pop(g)
try:
if g.exception:
raise g.exception
except:
self.logger.exception('exception processing message %s',
message.message_id)
else:
processed.append(message)
return processed
评论列表
文章目录