只是为了提到:
asyncio.Task
对象具有方法
result
和
exception
.
结果
:
[…]如果协同程序引发异常,则该异常为
重新提出[…]
例外
:
[…]如果包装的协同程序引发异常,则该异常为
返回[…]
给定一个简单的设置(在Python3.7语法中):
import asyncio
tasks =[]
async def bad_test():
raise ValueError
async def good_test():
return
async def main():
tasks.append(asyncio.create_task(bad_test()))
tasks.append(asyncio.create_task(good_test()))
asyncio.run(main())
使用
结果
,一个人可以:
for t in tasks:
try:
f = t.result()
except ValueError as e:
logger.exception("we're all doomed")
或者,使用
例外
:
for t in tasks:
if isinstance(t.exception(), Exception):
logger.exception("apocalypse now")