def call_agents(self, data):
"""call a method on all agents"""
try:
d = {'args': [], 'kwargs': {}}
d.update(data)
if self.agents:
results = [getattr(agent, d['func'])(*d['args'], **d['kwargs']) for agent in self.agents.values()]
if inspect.isgenerator(results[0]):
results = yield from asyncio.gather(*results)
else:
results = []
return {'status': 'ok', 'results': results}
except Exception as e:
tb = traceback.format_exc()
logger.exception(e)
logger.exception(tb)
return {'status': 'failed', 'exception': e, 'traceback': tb}
评论列表
文章目录