Python 开发与语法
asyncio 中的并发、超时与取消
区分等待 I/O 和占用事件循环的同步工作。
原理
asyncio 在协程等待 I/O 时切换任务。同步 sleep 或耗时计算会占住事件循环,同进程其他协程也无法按时运行。
开发中的做法
给外部调用设超时,并将并发限制在下游能承受的范围。资源清理写入 finally,避免取消时遗漏关闭连接。
验证与追问
测试快速成功、超时和主动取消三种情况。不要吞掉取消异常,否则上层可能以为任务仍在按计划终止。
代码片段
async with asyncio.timeout(2):
result = await fetch_record()