asyncio重构Flask接口,QPS从120翻倍到340的完整记录
一个内部报表API,单次查询需聚合3张表、耗时1.8s,压测QPS仅120。我用asyncio+httpx将三个独立IO串行改并发,配合uvicorn部署,接口P95从1850ms降到620ms,QPS提升至340。本文记录完整重构过程,包含asyncio.Semaphore限流、gather异常隔离、事件循环避坑,以及一份可复用的异步爬虫/API模板。如果你正被同步IO阻塞折磨,这篇值得花5分钟
Prompt工程调优实录:从42%到89%准确率的RAG问答系统优化
在构建基于GPT-4o-mini的RAG问答系统时,我通过系统性实验对比了7种Prompt模板,记录了从基础指令到结构化思维链的完整优化路径。实验数据显示:仅通过调整Prompt结构,无需更换模型或增加上下文长度,系统准确率就从42%提升至89%,单次查询Token消耗从1864降至1120。文中包含完整的代码实现、参数配置和失败案例复盘,希望能帮大家少走弯路。
asyncio重构Flask API:并发吞吐提升320%的5个关键改动
在一次电商大促压测中,我发现订单查询接口在500并发下P95延迟飙到4.2秒,数据库连接池被打满。通过asyncio+asyncpg将同步IO改为异步协程,配合Semaphore限流和连接池复用,最终P95降至1.1秒,吞吐量从380 req/s提升到1210 req/s。这篇文章完整记录了我的改造过程,包括before/after代码对比、三个隐藏的坑(事件循环阻塞、连接池耗尽、超时控制失效)以
FastAPI慢查询治理:cProfile+SQL优化+Redis缓存三层提速方案
某电商订单API在QPS 200时P95延迟飙至3.8s,经cProfile定位到SQL N+1与重复计算两大病灶。通过SQLAlchemy selectinload批量加载、Redis多级缓存(本地+分布式)及异步改造,P95降至320ms,QPS提升至1800。文中提供完整profiling脚本与缓存装饰器实现,附压测对比数据,可直接复用于FastAPI/Flask项目。
LoRA微调7B参数大模型全记录:从数据清洗到显存优化
上周用单张4090把Llama-3-8B调成了法律问答助手,全程踩坑不断。本文记录完整实践:用QLoRA把显存压在11GB内,微调后模型在自建法律问答集上BLEU提升0.17,回答长度可控性大幅增强。你会看到具体的数据处理代码、训练配置、loss曲线分析,以及最终推理效果对比。关键词:QLoRA、bitsandbytes、PEFT、Llama-3-8B。
QLoRA微调Qwen2-7B指令遵循:4bit量化下loss降至0.82
微调7B模型显存不够?本文记录使用QLoRA在单张24G RTX 3090上微调Qwen2-7B-Instruct的全过程。通过4bit NormalFloat量化、双LoRA适配器(rank=64, alpha=128)和paged_adamw_8bit优化器,将峰值显存控制在18.7GB。在自建的8000条客服指令数据上训练3个epoch,loss从1.42降至0.82。推理对比显示,微调后模
LangChain 0.3手写Agent:工具记忆与循环控制全拆解
本文记录了我用LangChain 0.3.1和AutoGPT思想从零手写一个可运行的AI Agent全过程。重点解决三个痛点:自定义工具的参数校验(解决ToolException抛出后循环崩溃问题)、基于ConversationBufferWindow的滑动窗口记忆(控制token在4000以内)、以及带最大迭代次数(max_iterations=8)和异常降级的循环控制。最终在股票查询+天气查询
RAG准确率从62%到89%:chunk分割、Embedding选型与Rerank重排全记录
生产环境的RAG系统在文档问答中频繁答非所问,检索Top5命中率仅62%。本文记录了完整的优化链路:将固定512字符的chunk改为基于语义边界的动态分割,命中率提升至71%;将bge-large-zh替换为text-embedding-v3,命中率提升至78%;最后引入bge-reranker-base重排,Top5命中率稳定在89%。文中给出完整的代码实现、参数配置与踩坑记录,包括中文标点切分
LangChain 0.3手写Agent循环:工具注册与记忆回收的7个实现细节
当AutoGPT的Plan-and-Execute循环在复杂任务中频繁死循环时,我决定用LangChain 0.3.7手写一个仅200行的Agent内核,支持工具增删、滑动窗口记忆和异常熔断。在WizardLM-13B模型上,工具调用成功率从78%提升至94%,平均单轮响应从3.2秒降至1.8秒。核心实现包括:ToolRegistry动态注册、双缓冲记忆池、重试退避策略,以及基于token预算的循
React 19与Vue 3.5告别Props钻取:Zustand与Pinia迁移实录
本文记录一个中型CRM系统从React Context/Props向Zustand(React 19)及Pinia(Vue 3.5)迁移的完整过程。项目包含42个路由页面、超过200个组件,迁移前因Props钻取导致平均组件重渲染次数达8.3次/操作,Context更新引发全树渲染。迁移后,核心页面渲染时间从210ms降至65ms,内存占用减少37%。文中对比两者设计哲学,提供原子化Store切分
asyncio重构Flask接口:QPS从87到1420的并发改造实录
一个批量查询接口,在4核8G机器上,压测QPS只有87,RT P99高达2.3秒。用asyncio + aiohttp重构后,同样的压测场景,QPS飙到1420,P99降到180ms。这不是魔法,而是把每个请求内部的5次串行HTTP调用改成了并发。本文记录这次改造的完整过程,包括asyncio.Semaphore限流、aiohttp连接池参数调优、以及一个差点让我放弃的TaskGroup坑。代码基
React 19与Vue 3.5下的状态管理迁移:从Props钻取到Zustand/Pinia的工程化实践
接手一个维护两年的中后台项目,200+组件,状态散落在Context和Props中,每次需求迭代都像在迷宫里找线头。产品侧反馈页面切换卡顿,DevTools显示Context导致的重渲染平均每次操作触发87次多余render。本文记录我将该项目从React 19的Context+useReducer迁移到Zustand v5,以及另一个Vue 3.5项目从Props+emit迁移到Pinia v3
asyncio重构Flask接口:请求耗时从850ms降至120ms的实践记录
某个凌晨两点,线上告警群里炸了锅——订单导出接口平均响应时间飙到850ms,数据库连接池被打满。排查后发现,罪魁祸首是串行调用三个下游HTTP服务(用户服务、库存服务、价格服务),每个耗时250ms左右。本文记录了我用Python 3.10原生的asyncio + httpx将该接口从同步阻塞改为异步并发,在不引入Celery等重型中间件的前提下,将P95延迟从1.2s压到180ms,数据库连接数
FastAPI接口耗时2200ms降至90ms:Profile与缓存优化实录
一个内部报表接口在QPS300时P99延迟飙至2.2秒,数据库CPU被打满。通过cProfile定位出N+1查询与JSON序列化两大元凶,再配合Redis缓存热点数据与SQL窗口函数重写,最终将P99降到90ms,单机QPS从420提升至3800。本文记录了完整的优化链路:从py-spy火焰图到SQLAlchemy懒加载陷阱,再到缓存一致性设计,含全部可复现代码与压测数据,适合正在被慢接口折磨的P
asyncio重构Flask接口,QPS从120飙升到850的完整记录
一个内部报表接口因串行调用三次外部HTTP服务,高峰期平均延迟2.8秒,F5健康检查频繁超时。用asyncio搭配aiohttp重写后,在Python 3.8.10、单机4核8G环境下,接口P95延迟从3100ms降至420ms,QPS从120提升至850,CPU峰值反而下降15%。本文记录了从同步到异步的完整改造过程,包括Semaphore限流、超时控制、连接池复用等关键细节,以及两个隐藏极深的
Docker Compose 2.24多服务编排:网络隔离与健康检查实战配置
本文基于 Docker Compose 2.24.0 与 Docker Engine 25.0.3,分享一个生产级多服务项目的完整编排方案。项目包含 Nginx 1.25、Golang 1.22 API 服务、PostgreSQL 15.3 和 Redis 7.2,通过自定义 bridge 网络实现服务隔离,利用卷挂载持久化数据,配置 healthcheck 控制启动依赖。实测服务冷启动时间从原来
7B模型LoRA微调实录:从数据清洗到推理显存节省80%
上周用单张RTX 3090对Llama-2-7B做领域微调,通过LoRA将训练显存从112GB压到21GB,训练速度仅下降18%。本文记录完整过程:从构造1.2万条法律问答数据,到用peft库配置r=8的LoRA模块,再到loss从2.1降至0.47的曲线变化。实测微调后模型在领域问答的ROUGE-L从0.23提升到0.51,而通用能力几乎无损。包含全部代码和踩坑记录,特别是关于梯度检查点与LoR
asyncio重构Flask接口:Web API吞吐量提升3倍实践
在一次真实业务压测中,我发现现有Flask同步接口在20并发下平均响应时间飙升至1.2秒,而通过asyncio+httpx异步化改造后,同样20并发下P95延迟降至380ms,吞吐量从85 req/s提升至260 req/s。这篇文章将完整记录我的改造过程,包括协程设计、事件循环配置、以及Python 3.11中asyncio的TaskGroup新语法。你会看到具体的before/after代码,
Docker Compose多服务编排:网络、健康检查与启动顺序实践
本文分享一个基于Docker Compose v2.24.2的6服务容器化部署方案,包含Nginx网关、Spring Boot后端、PostgreSQL、Redis、RabbitMQ及定时任务组件。通过自定义bridge网络实现服务隔离,利用healthcheck与depends_on条件组合解决启动顺序问题,卷挂载持久化数据。配置上线后服务启动时间从原来的3分12秒缩短至58秒,容器重启成功率提
Git分支模型与CI/CD集成:从混乱到有序的版本控制演进
团队从3人扩张到12人后,feature分支冲突率从每周15次降至2次,发布周期从2天缩短至4小时。这套基于Git Flow改良的Trunk-Based分支策略,配合GitHub Actions自动化流水线,解决了多环境部署和紧急热修复的痛点。文中分享的分支命名规范、Code Review检查清单、以及Jenkins迁移至Gitea Actions的踩坑记录,都是实际生产环境验证过的方案。如果你正