Windows + WSL 环境下使用 LangGraph PostgresSaver 连接 PostgreSQL 缓慢的问题
Windows + WSL 环境下使用 LangGraph PostgresSaver 连接 PostgreSQL 缓慢的问题
最近跟着尚硅谷学习 Langchain中Agent 的持久化记忆功能,视频中是买了一个服务器,由于原来电脑安装过了WSL,就没有按照视频中的操作来,而是直接在在 WSL Ubuntu 中安装了 PostgreSQL,并使用PostgresSaver作为 LangGraph 的 Checkpointer。
但是在连接的时候遇到了连接缓慢的问题,问题如下:
首先在Ubuntu中配置安装好 PostgreSQL 后使用下面的命令启动服务(注意填入自己的密码):
psql postgresql://langchain_user:<password>@localhost:5432/langchain_db? sslmode=disable启动后终端显示如下:
返回到编译器中,这里是使用pycharm,运行下面的连接测试代码:
from langgraph.checkpoint.postgres import PostgresSaver DB_URL = "postgresql://langchain_user:<password>@localhost:5432/langchain_db?sslmode=disable" print("① 开始连接 PostgreSQL") with PostgresSaver.from_conn_string(DB_URL) as checkpointer: print("② PostgreSQL 连接成功") checkpointer.setup() print("③ PostgreSQL setup 完成")运行后会发现连接时长很慢:
后面发现的解决方法是将主机名localhost更换为本机ip(127.0.0.1),效果显著,基本上100ms内可以连接并初始化完成:
关于原因,由于本人功力不够,下面是ai给出的解答,大家可以参考一下:
localhost并不是一个 IP 地址,而是一个主机名,程序需要先将localhost解析成实际的网络地址。
通常情况下,localhost可能对应:127.0.0.1,也可能对应 IPv6:::1。而:127.0.0.1则是明确指定:使用 IPv4 的本机回环地址。
因此,真正的问题不是 PostgreSQL 性能,也不是 LangGraph 性能,而是 Windows → WSL 这一网络环境下,localhost的解析/连接路径导致了异常等待。
WSL 2 默认采用虚拟化网络环境,Windows 与 WSL 之间存在网络边界;Windows 应用虽然通常可以通过localhost访问 WSL 中的服务,但具体连接行为仍然受到地址解析、IPv4/IPv6 以及 WSL 网络配置等因素影响。
这些就是本篇文章的全部内容了,希望能帮到你,如有误欢迎大家提出 (◕‿◕) 。
