From 4717b8beac24f519ec2f2d629548244573cb4e00 Mon Sep 17 00:00:00 2001 From: rainv123 <2148537152@qq.com> Date: Mon, 27 Apr 2026 17:29:41 +0800 Subject: [PATCH] =?UTF-8?q?fix=E4=BF=AE=E5=A4=8D=20asyncio.gather=20?= =?UTF-8?q?=E5=90=9E=E6=8E=89=E4=B8=9A=E5=8A=A1=E5=BC=82=E5=B8=B8=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main/xiaozhi-server/config/config_loader.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/main/xiaozhi-server/config/config_loader.py b/main/xiaozhi-server/config/config_loader.py index 9c093e58..070d83a3 100644 --- a/main/xiaozhi-server/config/config_loader.py +++ b/main/xiaozhi-server/config/config_loader.py @@ -2,7 +2,14 @@ import os import asyncio import yaml from collections.abc import Mapping -from config.manage_api_client import init_service, get_server_config, get_agent_models, get_correct_words +from config.manage_api_client import ( + init_service, + get_server_config, + get_agent_models, + get_correct_words, + DeviceNotFoundException, + DeviceBindException, +) def get_project_dir(): @@ -91,10 +98,18 @@ async def get_private_config_from_api(config, device_id, client_id): results = await asyncio.gather( get_agent_models(device_id, client_id, config["selected_module"]), get_correct_words(device_id), - return_exceptions=True + return_exceptions=True, ) - private_config = results[0] if not isinstance(results[0], Exception) else {} + agent_result = results[0] correct_words = results[1] if not isinstance(results[1], Exception) else None + + # 抛出业务异常 + if isinstance(agent_result, DeviceNotFoundException): + raise agent_result + if isinstance(agent_result, DeviceBindException): + raise agent_result + + private_config = agent_result if not isinstance(agent_result, Exception) else {} if correct_words: private_config["correct_words"] = correct_words return private_config