【发布时间】:2019-01-03 12:41:53
【问题描述】:
我有一个函数f() 进行 API 调用,我想异步调用它多次。我像这样使用asyncio lib:
async def main():
loop = asyncio.get_event_loop()
futures = [loop.run_in_executor(None, f) for i in range(10)]
await asyncio.gather(*futures)
return futures
result = asyncio.get_event_loop().run_until_complete(main())
问题是有时f() 会引发Exception,我不知道如何处理它。文档说Futures 可以包含Exception,但这里不是这样,会引发错误并导致程序崩溃。
我如何做到这一点?我想我可以为 f() 和 try: catch: 编写一个包装器,但如果该功能是由 lib 提供的,那似乎很难看。
提前感谢您的帮助,
【问题讨论】:
标签: python python-asyncio