asyncio重构Flask API:请求耗时从450ms降至120ms
某内部系统的用户详情接口,因串行调用三个独立上游服务,P99延迟飙升至860ms,严重影响前端体验。本文记录一次基于asyncio的并发改造全过程:引入`httpx.AsyncClient`配合`asyncio.gather`,将三次串行RPC改为并发请求,同时处理了连接池复用与超时熔断。改造后P95耗时从450ms降至120ms,吞吐量提升3.2倍,CPU占用反而下降。文中提供完整before/

Engineer,重视稳定性、可维护性和效率,主要关注软件开发,分享代码实现与工程实践、项目复盘及真实项目复盘;倾向用真实案例代替空泛结论。保持好奇,保持实践,也保持独立判断。
某内部系统的用户详情接口,因串行调用三个独立上游服务,P99延迟飙升至860ms,严重影响前端体验。本文记录一次基于asyncio的并发改造全过程:引入`httpx.AsyncClient`配合`asyncio.gather`,将三次串行RPC改为并发请求,同时处理了连接池复用与超时熔断。改造后P95耗时从450ms降至120ms,吞吐量提升3.2倍,CPU占用反而下降。文中提供完整before/
线上问答系统命中率卡在61%,用户反复追问“答案不完整”。排查发现根因不在模型,而在RAG管线的数据形态与检索精度。本文记录了完整的优化链路:将固定512字chunk改为按Markdown标题动态切片,Embedding模型从text2vec-large切换至bge-m3,并引入bge-reranker-v2-m3做精排。优化后,在自建2000条知识库测试集上,Hit Rate从61.3%升至89
一个订单查询接口,平均耗时380ms,QPS 120,压测时CPU闲置但线程池打满。用asyncio+httpx重写后,P95延迟降到89ms,QPS冲到980。本文记录完整重构过程:从Flask同步视图迁移到asyncio原生协程,包含信号量限流、超时控制、连接池复用,以及两个隐蔽的性能坑——EventLoop阻塞和DNS解析阻塞。所有代码和压测数据均来自真实生产环境(Python 3.10.8