装闭 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 观察数据库状态并把后台任务转换为实时进度条和完成跳转。

相关新闻

百度网盘下载速度突然很慢怎么回事?2026还有解除限制的方法吗

百度网盘下载速度突然很慢怎么回事?2026还有解除限制的方法吗

不少人可能会遇到这样的困扰:在日常日常使用网络存储服务时,原本几兆甚至几十兆每秒的传输速度,忽然降到了几十KB,或者出现速度忽高忽低、频繁波动的状况。这种现象通常由多重因素共同作用产生,下面梳理了常见的原因及…

2026/7/24 17:52:09阅读更多 →
2026年录音转换文字的软件深度测评:成本分析维度下,谁才是王者

2026年录音转换文字的软件深度测评:成本分析维度下,谁才是王者

先说明白核心判断 从企业决策记录、会议管理、行业峰会内容消化这些高频场景出发,以全链路综合成本为判断维度,没有通吃所有场景的王者,只匹配你的使用频次:低频单次需求选网易见外,飞书生态内企业协作选飞书妙记&…

2026/7/24 17:52:09阅读更多 →
华为MetaERP Oracle Fusion Financials 会计核算架构深度分析报告基于 Oracle Fusion Cloud Financials 26C 官方文档体系整理,涵盖设计哲

华为MetaERP Oracle Fusion Financials 会计核算架构深度分析报告基于 Oracle Fusion Cloud Financials 26C 官方文档体系整理,涵盖设计哲

Oracle Fusion Financials 会计核算架构深度分析报告基于 Oracle Fusion Cloud Financials 26C 官方文档体系整理,涵盖设计哲学、业务流程、实现步骤、组织架构成熟度对比,以及 PTP 端到端业务场景的核算与预算控制逻辑。一、Fusion Accounting 的设计哲…

2026/7/24 17:52:09阅读更多 →
PCL2启动器终极指南:5大核心功能彻底解决你的Minecraft管理难题

PCL2启动器终极指南:5大核心功能彻底解决你的Minecraft管理难题

PCL2启动器终极指南:5大核心功能彻底解决你的Minecraft管理难题 【免费下载链接】PCL Minecraft 启动器 Plain Craft Launcher(PCL)。 项目地址: https://gitcode.com/gh_mirrors/pc/PCL 你是否曾经为了管理不同版本的Minecraft而手忙…

2026/7/25 1:01:24阅读更多 →
战略咨询行业新标尺:聚焦企业实际经营成效的专业服务

战略咨询行业新标尺:聚焦企业实际经营成效的专业服务

在日益竞争的市场中,企业需要面对多变的挑战。专业服务正在发生变化:不再只停留在理论框架,而是通过具体案例推动解决方案,并关注长期目标。借助创新的方法与工具,咨询公司能够提供定制化的服务,并通过清晰…

2026/7/25 1:01:24阅读更多 →
系统运维脚本:定时采集、定时备份、远程重启、磁盘空间监控

系统运维脚本:定时采集、定时备份、远程重启、磁盘空间监控

系统运维脚本:定时采集、定时备份、远程重启、磁盘空间监控工控设备部署在野外,你不可能天天往现场跑——运维自动化不是选择题,是必答题。一、工控运维为什么必须自动化 工业控制设备的典型运行环境:工厂车间、户外机柜、偏远站点…

2026/7/25 1:01:24阅读更多 →
看门狗驱动与应用:硬件看门狗喂狗、死机自动重启机制实现

看门狗驱动与应用:硬件看门狗喂狗、死机自动重启机制实现

看门狗驱动与应用:硬件看门狗喂狗、死机自动重启机制实现你的工控板死机了,你人还在被窝里——这就是没有看门狗的代价。一、看门狗到底是什么 看门狗(Watchdog Timer,WDT)本质上是一个硬件倒计时器。启动后它开始从预…

2026/7/25 1:01:24阅读更多 →
工控界面方案选型:QT5/QT6 轻量化窗口、无屏纯后台两种开发模式

工控界面方案选型:QT5/QT6 轻量化窗口、无屏纯后台两种开发模式

工控界面方案选型:QT5/QT6 轻量化窗口、无屏纯后台两种开发模式有些工控设备需要人机界面(HMI),有些就是闷头干活不带屏幕。选哪种方案?今天把两条路都铺开,让你少走弯路。一、工控设备两大模式 工控设备的…

2026/7/25 1:01:24阅读更多 →
剑网3智能机器人:5分钟快速搭建的全能游戏助手

剑网3智能机器人:5分钟快速搭建的全能游戏助手

剑网3智能机器人:5分钟快速搭建的全能游戏助手 【免费下载链接】mini_jx3_bot 女生自用剑网三机器人 项目地址: https://gitcode.com/gh_mirrors/mi/mini_jx3_bot 在剑网3的武侠世界中,你是否曾为繁琐的游戏数据查询而烦恼?是否希望有…

2026/7/25 0:59:24阅读更多 →
Go语言静态资源打包方案对比与实践指南

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

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

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

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

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

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

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

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

2026/7/25 1:01:14阅读更多 →
突破文档下载限制:kill-doc让你看到的都能保存

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

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

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

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

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

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

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

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

2026/7/25 0:01:16阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/24 23:01:03阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/24 19:00:40阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/24 19:00:40阅读更多 →