Refactor Postgres connection string handling in ChatService to use environment variable for better configuration management in Docker and local development.

This commit is contained in:
eason 2026-03-03 13:31:37 +08:00
parent 6f0ac0c588
commit 974d613fb0
1 changed files with 10 additions and 4 deletions

View File

@ -201,14 +201,20 @@ class ChatService:
if not ChatService._checkpointer_initialized: if not ChatService._checkpointer_initialized:
from langgraph.checkpoint.postgres import PostgresSaver from langgraph.checkpoint.postgres import PostgresSaver
import psycopg2 import psycopg2
CONN_STRING = "postgresql://postgres:postgres@localhost:5433/postgres" # LangGraph 使用的 Postgres 连接串,优先从环境变量读取,便于在 Docker / 本地区分配置
ChatService._conn_string = CONN_STRING # - Docker 内建议LANGGRAPH_PG_URL=postgresql://drgraph:yingping@db:5432/th_agenter
# - 本地开发可用: LANGGRAPH_PG_URL=postgresql://drgraph:yingping@localhost:5433/th_agenter
conn_string = os.getenv(
"LANGGRAPH_PG_URL",
"postgresql://drgraph:yingping@localhost:5433/th_agenter",
)
ChatService._conn_string = conn_string
# 检查必要的表是否已存在 # 检查必要的表是否已存在
tables_need_setup = True tables_need_setup = True
try: try:
# 连接到数据库并检查表是否存在 # 连接到数据库并检查表是否存在
conn = psycopg2.connect(CONN_STRING) conn = psycopg2.connect(conn_string)
cursor = conn.cursor() cursor = conn.cursor()
# 检查langgraph需要的表是否存在 # 检查langgraph需要的表是否存在
@ -237,7 +243,7 @@ class ChatService:
if tables_need_setup: if tables_need_setup:
self.session.desc = "ChatService初始化 - 正在进行PostgresSaver setup" self.session.desc = "ChatService初始化 - 正在进行PostgresSaver setup"
try: try:
async with AsyncPostgresSaver.from_conn_string(CONN_STRING) as checkpointer: async with AsyncPostgresSaver.from_conn_string(conn_string) as checkpointer:
await checkpointer.setup() await checkpointer.setup()
self.session.desc = "ChatService初始化 - PostgresSaver setup完成" self.session.desc = "ChatService初始化 - PostgresSaver setup完成"
logger.info("PostgresSaver setup完成") logger.info("PostgresSaver setup完成")