asyncio
是 Python 标准库中的一个模块,用于编写并发代码,主要通过协程(coroutines)来实现异步 I/O 操作。协程是一种用户态的轻量级线程,可以在单个线程内并发执行多个任务。
async def
定义的函数,可以在执行过程中暂停和恢复。在 asyncio
中,当异常发生时,可能会导致任务提前终止。为了确保所有任务都能完成,可以使用 asyncio.gather
并设置 return_exceptions=True
参数。
import asyncio
async def task_with_exception():
await asyncio.sleep(1)
raise ValueError("An error occurred")
async def main():
tasks = [
asyncio.create_task(task_with_exception()),
asyncio.create_task(asyncio.sleep(2))
]
results = await asyncio.gather(*tasks, return_exceptions=True)
for result in results:
if isinstance(result, Exception):
print(f"Caught exception: {result}")
else:
print(f"Task completed: {result}")
asyncio.run(main())
asyncio.gather
:通过 asyncio.gather
并设置 return_exceptions=True
,可以确保所有任务都能完成,即使某些任务抛出异常。try...except
块捕获异常,进行相应的处理。通过以上方法,可以在 asyncio
中有效地处理异常,确保任务的顺利完成。
领取专属 10元无门槛券
手把手带您无忧上云