diff --git a/backend/open_webui/env.py b/backend/open_webui/env.py index 49aee4457..1039640d9 100644 --- a/backend/open_webui/env.py +++ b/backend/open_webui/env.py @@ -422,6 +422,11 @@ else: except Exception: AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST = 10 + +AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA = os.environ.get( + "AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA", "10" +) + #################################### # OFFLINE_MODE #################################### diff --git a/backend/open_webui/utils/tools.py b/backend/open_webui/utils/tools.py index ba19298aa..86a3b8885 100644 --- a/backend/open_webui/utils/tools.py +++ b/backend/open_webui/utils/tools.py @@ -18,6 +18,7 @@ from langchain_core.utils.function_calling import convert_to_openai_function from open_webui.models.tools import Tools from open_webui.models.users import UserModel from open_webui.utils.plugin import load_tools_module_by_id +from open_webui.env import AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA import copy @@ -399,7 +400,8 @@ async def get_tool_server_data(token: str, url: str) -> Dict[str, Any]: error = None try: - async with aiohttp.ClientSession() as session: + timeout = aiohttp.ClientTimeout(total=AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA) + async with aiohttp.ClientSession(timeout=timeout) as session: async with session.get(url, headers=headers) as response: if response.status != 200: error_body = await response.json()