PHIL / NOTES
← 返回笔记目录
Python 开发与语法

asyncio 中的并发、超时与取消

区分等待 I/O 和占用事件循环的同步工作。

原理

asyncio 在协程等待 I/O 时切换任务。同步 sleep 或耗时计算会占住事件循环,同进程其他协程也无法按时运行。

开发中的做法

给外部调用设超时,并将并发限制在下游能承受的范围。资源清理写入 finally,避免取消时遗漏关闭连接。

验证与追问

测试快速成功、超时和主动取消三种情况。不要吞掉取消异常,否则上层可能以为任务仍在按计划终止。

代码片段

async with asyncio.timeout(2):
    result = await fetch_record()