Python异步重构:用asyncio把Web API响应时间从900ms压到150ms
负责的订单查询接口在压测时P99延迟飙到900ms,数据库连接池被打满,CPU却只用了12%。在Python 3.10环境下用asyncio+httpx重构了第三方API调用链,把串行阻塞I/O改成并发协程,配合信号量限流和连接复用,最终P99降到147ms,QPS从320提升到2100。文章记录了完整的before/after代码、压测数据以及四个真实的踩坑点(包括asyncio.run的隐藏坑

一名专注于软件开发的工程实践者。日常记录代码实现与工程实践、问题排查与调试和项目中的问题解决过程;重视可维护性、稳定性与协作效率,也会分享真实项目中的判断过程与改进记录。
负责的订单查询接口在压测时P99延迟飙到900ms,数据库连接池被打满,CPU却只用了12%。在Python 3.10环境下用asyncio+httpx重构了第三方API调用链,把串行阻塞I/O改成并发协程,配合信号量限流和连接复用,最终P99降到147ms,QPS从320提升到2100。文章记录了完整的before/after代码、压测数据以及四个真实的踩坑点(包括asyncio.run的隐藏坑
本文基于实际业务场景(电商以图搜图,5000万条128维向量,QPS峰值1200),完整记录了Milvus 2.3.3与Qdrant 1.9.0的选型对比过程。从Docker部署、Python客户端写入、到查询性能与资源占用,全程实测数据说话:Milvus在百万级数据下召回准确率稳定在99.2%,但Qdrant在500万数据时延迟已飙升至487ms,而Milvus仅需92ms。最终我们选择了Mil