asyncio重构同步Web API:QPS从120提升到2100的调优记录
线上一个用Flask+requests写的聚合查询接口,压测QPS只有120,P99延迟高达1.8s,CPU却几乎闲着——典型的同步IO阻塞。我用asyncio+aiohttp重写了这个接口,配合连接池和并发控制,单机QPS做到2100,P99降到210ms,内存还降了三分之一。这篇文章记录完整的改造过程:before/after代码、Semaphore并发控制、连接池参数怎么调、以及我在事件循环

一名专注于Python开发的后端工程师。日常记录数据库和缓存、故障排查和项目中的问题解决过程;关注技术选择背后的成本与边界,也会分享开发笔记、工具测评和项目复盘。
线上一个用Flask+requests写的聚合查询接口,压测QPS只有120,P99延迟高达1.8s,CPU却几乎闲着——典型的同步IO阻塞。我用asyncio+aiohttp重写了这个接口,配合连接池和并发控制,单机QPS做到2100,P99降到210ms,内存还降了三分之一。这篇文章记录完整的改造过程:before/after代码、Semaphore并发控制、连接池参数怎么调、以及我在事件循环
线上一个FastAPI商品详情接口P99飙到2.3s,QPS一过50就开始超时。本文用py-spy+SQLAlchemy事件钩子定位到N+1查询和缺失索引,再引入Redis缓存与连接池调优,最终P99降到180ms,QPS从50提升到820,错误率归零。附完整压测数据与可运行代码。
本文用180行代码实现一个可运行的AI Agent,基于LangChain 0.3.7与OpenAI gpt-4o-mini模型,覆盖工具定义(含@tool装饰器与pydantic v2 schema)、记忆管理(BufferMemory + 滑动窗口裁剪)、错误重试(指数退避)与循环控制(max_iterations=5)。实测在“查询北京天气并计算温差”任务上,工具调用准确率92%,平均响应时