From b20d1733241668ccd25f38101ee633f16b53dd4b Mon Sep 17 00:00:00 2001 From: takatost Date: Wed, 5 Jun 2024 02:06:19 +0800 Subject: [PATCH] =?UTF-8?q?pref:=20optimize=20feature=20model=5Fload=5Fbal?= =?UTF-8?q?ancing=5Fenabled=20value=20fetch=20speed=E2=80=A6=20(#4933)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/core/provider_manager.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/api/core/provider_manager.py b/api/core/provider_manager.py index 5f00958ed3..c9447a79df 100644 --- a/api/core/provider_manager.py +++ b/api/core/provider_manager.py @@ -27,6 +27,7 @@ from core.model_runtime.entities.provider_entities import ( from core.model_runtime.model_providers import model_provider_factory from extensions import ext_hosting_provider from extensions.ext_database import db +from extensions.ext_redis import redis_client from models.provider import ( LoadBalancingModelConfig, Provider, @@ -406,7 +407,15 @@ class ProviderManager: :param tenant_id: workspace id :return: """ - model_load_balancing_enabled = FeatureService.get_features(tenant_id).model_load_balancing_enabled + cache_key = f"tenant:{tenant_id}:model_load_balancing_enabled" + cache_result = redis_client.get(cache_key) + if cache_result is None: + model_load_balancing_enabled = FeatureService.get_features(tenant_id).model_load_balancing_enabled + redis_client.setex(cache_key, 120, str(model_load_balancing_enabled)) + else: + cache_result = cache_result.decode('utf-8') + model_load_balancing_enabled = cache_result == 'True' + if not model_load_balancing_enabled: return dict()