Commit fb872812 authored by 何家明's avatar 何家明

调整会话保持逻辑

parent 5c1cb255
......@@ -27,7 +27,6 @@ class McpClient:
self.default_system_prompt = None # mcp_server提供的默认提示词
self.available_tools: [] = None # mcp_server提供的tool
self.session: Optional[ClientSession] = None
# self.exit_stack = AsyncExitStack()
active_model = config["model"][config["active"]]
self.client = AsyncOpenAI(
api_key=active_model["api_key"],
......@@ -39,33 +38,26 @@ class McpClient:
args=config["server"]["args"],
)
async def _session_ping(self):
logger.info(f"Start to get stdio client...")
async def _session_keepalive(self):
logger.info("Start to get stdio client...")
async with stdio_client(self.server_params) as client:
logger.info(f"Start to get stdio client session...")
logger.info("Start to get stdio client session...")
async with ClientSession(*client) as session:
logger.info(f"Start to initialize stdio client session...")
logger.info("Start to initialize stdio client session...")
await session.initialize()
logger.info(f"End to initialize stdio client session...")
logger.info("End to initialize stdio client session...")
self.session = session
await self.read_mcp()
try:
while True:
logger.info(f"Start to ping stdio client session...")
logger.info("Start to ping stdio client session...")
await asyncio.sleep(10)
await session.send_ping()
logger.info(f"End to ping stdio client session...")
logger.info("End to ping stdio client session...")
except Exception as e:
logger.exception(e)
self.session = None
async def _session_keepalive(self):
while True:
try:
logger.info(f"Start to keep session alive...")
await self._session_ping()
except Exception as e:
logger.exception(e)
async def start(self):
asyncio.create_task(self._session_keepalive())
......@@ -207,7 +199,6 @@ async def lifespan(app):
async def user_query(message: str, customer_id: str):
try:
await instance.read_mcp()
async for r in instance.process_query(message, customer_id):
yield r
except Exception as e:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment