用途:面向需要编写高质量异步 Python 代码的场景,围绕 TaskGroup 结构化并发与 Python 3.11+ 特性,帮助实现并发请求、异步服务与错误传播。适用场景包括并发 HTTP 请求或数据库查询、带取消处理的异步服务、多任务并发与限流,以及把同步代码桥接到异步上下文。
主要能力:
- TaskGroup 替代 gather,保证所有任务要么全部完成、要么全部取消;可结合 asyncio.timeout() 设置整体超时。
- 用 asyncio.Semaphore 限制并发数,防止连接池或资源耗尽。
- 用 except* 处理 ExceptionGroup,收集并发任务中的成功与失败结果。
- 同步到异步桥接:asyncio.to_thread()、loop.run_in_executor() 运行阻塞/CPU 密集代码,避免阻塞事件循环。
- 取消处理:捕获 CancelledError 后清理资源并必须重新抛出,否则会破坏 TaskGroup 与 timeout。
关键建议:新代码用 TaskGroup 而非 gather();超时用 asyncio.timeout() 上下文管理器;并发限制用 Semaphore;同步桥接优先用 asyncio.to_thread();异常用 except* 处理;始终重新抛出 CancelledError。
禁止事项:不要用 gather() 写新代码;不要吞掉 CancelledError;不要在 TaskGroup 外使用 create_task() 造成任务泄漏;不要在异步上下文管理器中 yield(PEP 789);不要在已有事件循环内调用 asyncio.run();不要用 time.sleep() 或同步 requests 阻塞事件循环。
相关技能包括 sqlalchemy-2-async、fastapi-advanced、background-jobs、streaming-api-patterns。具体安装方式、收费与平台限制暂未提供。