从图状态到API服务:LangGraph进阶与FastAPI+PostgreSQL工程地基
📅 2026年7月1日 · LangGraph状态管理 · FastAPI全栈 · PostgreSQL高级特性0. 今日学习地图昨天我们完成了项目全景认知和Python异步编程基础,今天正式进入工程地基的构建。内容从LangGraph的高级状态管理、记忆机制,到FastAPI API层开发,再到PostgreSQL数据库的高级特性,是真正"动手写代码"的一天。今日三大模块LangGraph进阶Reducer 合并规则Checkpointer 记忆条件分支路由FastAPI 全栈Pydantic自动校验Depends依赖注入SSE流式响应文件上传/异常处理PostgreSQLUUID主键JSON字段查询ON CONFLICT触发器1. 异步上下文管理器深度解析昨天我们简单提到了@asynccontextmanager,今天从原理层面彻底搞懂它。上下文管理器的核心目的只有一个:保证资源一定被释放,无论中间是否发生异常。同步上下文管理器原理任何实现了__enter__和__exit__魔法方法的对象,都可以配合with使用:classDatabaseConnection:def__enter__(self):# 进入 with 块时执行:建立连接self.conn=create_connection()returnself.conndef__exit__(self,exc_type,exc_val,exc_tb):# 退出 with 块时执行:关闭连接(即使报错也会执行)self.conn.close()# 返回 False 表示不吞掉异常,向上抛出returnFalse# 使用方式withDatabaseConnection()asconn:conn.query("SELECT ...")# 离开作用域,连接自动关闭异步版本:aenter和aexit异步场景下(数据库连接、网络请求都是异步IO),魔法方法变成了__aenter__和__aexit__,配合async with使用:异步 async with 执行流程正常执行发生异常await __aenter__异步获取资源执行 async with 块内代码await __aexit__异步释放资源同步 with 执行流程正常执行发生异常调用 __enter__获取资源执行 with 块内代码调用 __exit__释放资源图1:同步withvs 异步async with执行生命周期对比简化写法:@asynccontextmanager手写魔法方法太繁琐,Python 标准库提供了装饰器简化写法,通过生成器 + yield优雅实现:fromcontextlibimportasynccontextmanager@asynccontextmanagerasyncdefget_db():# yield 之前:相当于 __aenter__conn=awaitasyncpg.connect(DATABASE_URL)try:yieldconn# 把连接交给调用方使用finally:# yield 之后:相当于 __aexit__,无论是否报错都执行awaitconn.close()# 使用asyncdefquery_user(user_id:int):asyncwithget_db()asconn:row=awaitconn.fetchrow("SELECT * FROM users WHERE id = $1",user_id)returnrow# 此处连接已确保关闭⚠️讲师踩坑提醒:yield 后的清理代码必须放在finally块中,否则当async with块内抛出异常时,清理代码不会执行,导致资源泄漏。2. LangGraph 进阶:从线性图到智能工作流2.1 条件边(Conditional Edges):让图学会"思考走哪条路"昨天我们学了固定边add_edge,它只能实现线性流程 A→B→C。而真正的智能体需要根据状态动态决策下一步,这就需要条件边。conceptcodechat

相关新闻

HoRain云--Java泛型核心:类型安全与代码复用

HoRain云--Java泛型核心:类型安全与代码复用

🎬 HoRain云小助手:个人主页 🔥 个人专栏: 《Linux 系列教程》《c语言教程》 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!…

2026/7/3 17:51:24阅读更多 →
Kafka2.8.2单机安装部署(CentOS 7.9JDK 1.8)

Kafka2.8.2单机安装部署(CentOS 7.9JDK 1.8)

环境信息操作系统:CentOS 7.9 (x86_64)硬件:4C8G(4核8GB)用户:rootJDK 路径:/usr/local/jdk1.8.0_491(已安装)Kafka 版本:2.8.2(Scala 2.13)虚拟机…

2026/7/3 17:51:24阅读更多 →
ChanlunX缠论插件:让复杂技术分析变得简单直观的智能工具

ChanlunX缠论插件:让复杂技术分析变得简单直观的智能工具

ChanlunX缠论插件:让复杂技术分析变得简单直观的智能工具 【免费下载链接】ChanlunX 缠中说禅炒股缠论可视化插件 项目地址: https://gitcode.com/gh_mirrors/ch/ChanlunX 还在为复杂的股票技术分析而烦恼吗?面对纷繁复杂的K线图和难以理解的技术…

2026/7/3 17:51:24阅读更多 →
数据结构:第5讲:字符串、数组

数据结构:第5讲:字符串、数组

目录 1.字符串匹配 2.多维数组1.字符串匹配 1.1 KMP匹配 (1)思路: 基于模式串确定next数组,利用next数组完成字符串匹配,在匹配过程中,发生字符不匹配情况时,next数组用来帮助确定下一次的匹配位…

2026/7/4 3:23:09阅读更多 →
<% tp.date.now(“YYYY年MM月DD日“) %> 的日记

<% tp.date.now(“YYYY年MM月DD日“) %> 的日记

<% tp.date.now("YYYY年MM月DD日") %> 的日记 【免费下载链接】Templater A template plugin for obsidian 项目地址: https://gitcode.com/gh_mirrors/te/Templater 星期&#xff1a; <% tp.date.now("dddd") %> 心情&#xff1a; &am…

2026/7/4 3:23:09阅读更多 →
【学习】用Labview做一个串口助手(二)

【学习】用Labview做一个串口助手(二)

前面操作的整体逻辑是&#xff1a;初始化-》然后等待指令-》根据指令进入不同事件改变状态 (3 封私信 / 2 条消息) 介绍一个超级实用的编程思想——状态机 - 知乎 一、状态机模式 串口助手的功能中&#xff0c;串口打开关闭只是基础&#xff0c;现在打好了地基要实现收发数据…

2026/7/4 3:23:09阅读更多 →
微信小程序开发工具测评:餐宝盈/BBWEYY/比文云/Typedream/Swipe Pages(2026年7月更新)含零代码SAAS、AI编程、源码定制交付

微信小程序开发工具测评:餐宝盈/BBWEYY/比文云/Typedream/Swipe Pages(2026年7月更新)含零代码SAAS、AI编程、源码定制交付

一、汇总表工具更适合谁价格开发方式核心特点餐宝盈适合所有行业的商家&#xff0c;尤其是拥有自己实体门店的商家&#xff0c;如餐饮、茶饮、烘焙、便利店、生鲜、社区零售门店、教培门店&#xff0c;尤其适合先把点单、预约、会员、发券和复购做起来的老板。99/年模板SAAS先下…

2026/7/4 3:23:09阅读更多 →
如何应对面试中的“职业空白期”问题

如何应对面试中的“职业空白期”问题

前天一位小伙伴向我咨询&#xff1a;近一年时间没有上班&#xff0c;接下来准备找工作&#xff0c;面试时该怎么回答面试官关于这段空白期的提问&#xff1f; 我建议他实话实说&#xff0c;但他表示不行——这一年的事情不愿意透露&#xff0c;即使说了&#xff0c;也可能影响求…

2026/7/4 3:23:09阅读更多 →
ECP5702 PD Sink协议芯片在无电池照明产品中的应用

ECP5702 PD Sink协议芯片在无电池照明产品中的应用

为什么越来越多便携设备开始采用PD供电&#xff1f;一款30W手持补光棒的方案分析PD供电为何越来越受欢迎&#xff1f;随着USB Type-C接口和PD快充协议的普及&#xff0c;越来越多的便携式设备开始采用PD供电方案&#xff0c;其中照明产品的变化尤为明显。不少补光灯、工作灯甚至…

2026/7/4 3:18:09阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月&#xff0c;Boris Cherny 公开宣布自己卸载了 IDE。一时间&#xff0c;Vibe Coding 成了全行业最热的话题。6个月后&#xff0c;当我们回过头来拉一份真实账本&#xff0c;发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/7/3 14:18:39阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言&#xff1a;审计结束三个月了&#xff0c;审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间&#xff0c;内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中&#xff0c;审计…

2026/7/3 14:38:35阅读更多 →
端到端自动驾驶:从GTC‘26看工程可信落地的核心逻辑

端到端自动驾驶:从GTC‘26看工程可信落地的核心逻辑

1. 项目概述&#xff1a;当算法工程师走进GTC26展厅&#xff0c;看到的不是芯片&#xff0c;而是“端到端”的呼吸节奏“端到端”这三个字&#xff0c;在GTC’26现场出现的频率&#xff0c;高得像NVLink带宽测试时的峰值曲线——它不再是一个论文里的技术路径选项&#xff0c;而…

2026/7/4 0:02:48阅读更多 →
缺牙修复科普:常见义齿类型与选择参考

缺牙修复科普:常见义齿类型与选择参考

缺牙修复科普&#xff1a;常见义齿类型与选择参考牙齿缺失是中老年人群中较为常见的口腔问题&#xff0c;不仅会造成咀嚼不便、进食受影响&#xff0c;长期还可能对营养摄入与日常社交带来困扰。义齿是改善缺牙问题的常用方式&#xff0c;目前市面上的义齿种类较多&#xff0c;…

2026/7/4 0:02:48阅读更多 →
STM32F091RC与LTC6904实现高精度方波信号生成

STM32F091RC与LTC6904实现高精度方波信号生成

1. 项目概述&#xff1a;LTC6904与STM32F091RC的精准方波生成方案在嵌入式系统开发中&#xff0c;精确的时钟信号和定时控制往往是项目成败的关键。LTC6904作为一款低功耗、高精度的可编程振荡器芯片&#xff0c;与STM32F091RC这款ARM Cortex-M0内核微控制器的组合&#xff0c;…

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

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

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

2026/7/4 1:16:56阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

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

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

2026/7/4 2:33:55阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

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

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

2026/7/4 2:33:55阅读更多 →