装闭 RenoPit 源码解析(05):FastAPI与Celery如何执行AI装修分析
AI 装修闭坑分析可能包含多张图片、多份合同以及多次大模型调用不适合让 FastAPI 请求一直阻塞。装闭 RenoPit 在 fthux/RenoPit 中使用 Celery 和 Redis 编排这条长任务链本篇分析任务从入队到结束的全过程。一、FastAPI 只负责启动任务用户点击“开始分析”后ProjectPage向POST /api/projects/{id}/analyze发送请求。trigger_analysis()首先查询项目、图片和文件并判断三类输入是否至少存在一种可分析图片已上传文档非空的用户补充说明。输入为空时返回 400项目已经处于analyzing时返回 409。校验通过后接口先把项目状态提交为analyzing再投递任务from..tasks.analysisimportrun_analysis_task run_analysis_task.delay(project_id)如果入队失败接口会把状态恢复为pending。因此浏览器收到成功响应时数据库已经记录了分析中的状态任务也已经进入 Redis。二、Celery 如何连接 Redistasks/celery_app.py创建 Celery 实例Broker 使用 Redis 0 号库结果后端使用 1 号库celery_appCelery(renovation_analyzer,brokersettings.CELERY_BROKER_URL,backendsettings.CELERY_RESULT_BACKEND,include[app.tasks.analysis],)任务消息和结果采用 JSON 序列化。task_acks_lateTrue表示任务执行完成后才确认消息worker_prefetch_multiplier1让 Worker 每次只预取一个长任务。软、硬时间限制都设置为 1200 秒以容纳串行的图片和文档分析。Docker Compose 中的backend与celery_worker使用同一份代码和环境变量但启动命令不同。Worker 不接收 HTTP 请求只监听 Redis 队列。三、run_analysis_task 是总编排器Celery 实际执行的是run_analysis_task(project_id)。它不是直接调用一次 LLM 就结束而是按六个阶段组织任务是否验证项目状态改为 analyzing设计图综合分析逐份文档分析成功文档是否不少于两份跨文档核查汇总状态completed 或 failed第三步调用run_analysis_sync()处理图片、已提取文本和用户说明。设计图分析失败不会立刻终止整个任务因为合同与报价单分析可以独立完成。四、文档分析按文件串行执行任务会查询当前项目中extracted_text非空且类型为 PDF、DOCX、TXT 或 Markdown 的文件。每份文件调用一次run_document_analysis_sync()结果追加到doc_results。单份文档异常会被捕获并记录为失败不会阻断下一份文件。这样一份无法解析的合同不会让其他报价单全部失去分析机会。当文档结果数量不少于两份时任务继续调用run_cross_check_sync()。该阶段会比较合同和报价单中的金额、项目、责任条款等信息并把差异写回综合分析结果。五、项目完成状态如何判定任务结束时分别计算design_okresult.get(status)completeddoc_ok_countsum(1foritemindoc_resultsifitem.get(status)completed)只要设计分析成功或者至少一份文档分析成功项目就被标记为completed。完成消息会汇总设计问题数、文档成功数和跨文档差异数。只有设计分析与全部文档分析都失败时项目状态才写为failed。最外层异常同样会落入失败分支并把错误信息提供给后续 SSE 接口读取。六、停止分析如何改变状态POST /projects/{id}/stop只接受当前状态为analyzing的项目。接口把项目恢复为pending再找到最近一条processing或pending的Analysis将其标为failed错误信息写成“用户手动停止”。状态提交后SSE 轮询会观察到pending并发送stopped事件。项目页据此关闭进度条并恢复开始分析按钮。七、异步任务调用链小结RenoPit 把 HTTP 请求和 AI 计算分成两个进程FastAPI 完成输入校验、状态更新和任务投递Celery Worker 完成设计分析、文档分析、交叉核查和最终状态汇总。Redis 负责传递任务PostgreSQL 则是两个进程共同认可的业务状态来源。这条任务链的完整代码可以在 fthux/RenoPit 中查看。下一篇将继续分析浏览器如何通过 SSE 观察数据库状态并把后台任务转换为实时进度条和完成跳转。

相关新闻

零基础玩转虚拟显示器:Parsec VDD让你的电脑屏幕随心扩展

零基础玩转虚拟显示器:Parsec VDD让你的电脑屏幕随心扩展

零基础玩转虚拟显示器:Parsec VDD让你的电脑屏幕随心扩展 【免费下载链接】parsec-vdd ✨ Perfect virtual display for game streaming 项目地址: https://gitcode.com/gh_mirrors/pa/parsec-vdd 你是否曾经因为显示器数量不足而感到工作空间受限&#xff1…

2026/7/25 18:28:56 阅读更多 →
TranslucentTB 开机启动设置:3步解决灰色选项问题,让透明任务栏自动运行

TranslucentTB 开机启动设置:3步解决灰色选项问题,让透明任务栏自动运行

TranslucentTB 开机启动设置:3步解决灰色选项问题,让透明任务栏自动运行 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentT…

2026/7/24 17:50:28 阅读更多 →
跑通 Demo 只是热身:为什么权限与日志才是你进大模型产线的生死线?

跑通 Demo 只是热身:为什么权限与日志才是你进大模型产线的生死线?

聊《我重新梳理AI大模型就业后,先删掉了这些无效投入》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要摘要 很多初级和大模型方向求职者在面试中最大的误区,是把“能运行”等同于“能上线…

2026/7/24 17:50:28 阅读更多 →

最新新闻

30分钟打造你的专属Windows 11精简系统:tiny11builder实战指南

30分钟打造你的专属Windows 11精简系统:tiny11builder实战指南

30分钟打造你的专属Windows 11精简系统:tiny11builder实战指南 【免费下载链接】tiny11builder Scripts to build a trimmed-down Windows 11 image. 项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder 还在为Windows 11的臃肿体积而烦恼吗&a…

2026/7/25 18:28:48 阅读更多 →
嵌入式开发实战:DMVA3/4内存映射与引脚配置深度解析

嵌入式开发实战:DMVA3/4内存映射与引脚配置深度解析

1. 项目概述与核心价值 在嵌入式系统开发,尤其是基于德州仪器(TI)这类高性能异构处理器的项目中,最让人头疼的往往不是算法实现,而是如何让软件“看见”并“指挥”硬件。我刚接触DMVA3/4这类芯片时,面对动辄…

2026/7/25 18:28:48 阅读更多 →
.NET 7 AOT 的使用以及 .NET 与 Go 互相调用

.NET 7 AOT 的使用以及 .NET 与 Go 互相调用

.NET 7 AOT 的使用以及 .NET 与 Go 互相调用 前言.NET 7 引入了原生 AOT(Ahead-of-Time)编译功能,这对于追求极致性能和跨平台部署的开发者来说,是一次革命性的升级。同时,在企业级开发中,我们经常需要将不…

2026/7/25 18:28:48 阅读更多 →
开源AI工具的核心优势与实战应用解析

开源AI工具的核心优势与实战应用解析

1. 开源AI工具的价值与意义在当今技术发展浪潮中,开源AI工具正成为开发者社区最炙手可热的话题。不同于商业闭源产品,优秀的开源项目往往具备三个核心优势:完全透明的技术实现、可自由定制的功能模块,以及活跃的社区支持生态。这些…

2026/7/25 18:28:48 阅读更多 →
阿里云Qwen-Audio-3.0-TTS中文语音合成实战指南

阿里云Qwen-Audio-3.0-TTS中文语音合成实战指南

1. 先搞清楚 Qwen-Audio-3.0-TTS 到底解决什么问题 如果你正在找一款能直接部署、支持中文、效果自然的文本转语音工具,阿里云这次发布的 Qwen-Audio-3.0-TTS 值得先看两眼。它不是那种只能跑英文的通用模型,也不是需要大量数据训练的语音克隆方案&#…

2026/7/25 18:27:48 阅读更多 →
AI测试智能体实战:基于Cursor、Claude Code、GitHub Copilot构建18个自动化测试方案

AI测试智能体实战:基于Cursor、Claude Code、GitHub Copilot构建18个自动化测试方案

在软件测试领域,手工编写测试用例、执行回归测试和生成测试报告的传统模式正面临效率瓶颈。随着AI技术的成熟,测试工程师可以利用AI工具构建智能测试代理,实现测试流程的自动化与智能化。本文将基于实际项目经验,详细介绍如何使用…

2026/7/25 18:27:48 阅读更多 →

日新闻

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的…

2026/7/25 0:00:35 阅读更多 →
C++ string类模拟实现:从深拷贝到内存管理的完整指南

C++ string类模拟实现:从深拷贝到内存管理的完整指南

1. 项目概述:为什么我们要“手撕”string类?在C的学习道路上,尤其是从C语言过渡到C的“初阶”阶段,string类绝对是一个绕不开的核心。标准库里的std::string用起来太方便了,、find、substr,几个操作符和函数…

2026/7/25 0:00:35 阅读更多 →
三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

1. 先搞清楚“三角洲寻宝鼠”到底是什么工具从名称来看,“三角洲寻宝鼠”更像是一个资源查找或文件检索类工具,而不是游戏或娱乐软件。这类工具的核心价值在于帮助用户快速定位特定资源,比如文档、图片、压缩包或特定格式的文件。如果你经常需…

2026/7/25 0:00:35 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/25 5:08:22 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/25 5:13:53 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻