fix: 在 Provider/Endpoint/Key 变更时清除 /v1/models 列表缓存

- 将 on_key_allowed_models_changed 改为 async 函数
- 在 Provider/Endpoint/Key 的增删改操作后调用 invalidate_models_list_cache
- 优化 invalidate_models_list_cache 使用 delete_pattern 通配符删除
This commit is contained in:
fawney19
2026-01-16 19:42:35 +08:00
parent 019e148ddb
commit 45f071abd9
8 changed files with 66 additions and 17 deletions

View File

@@ -51,11 +51,19 @@ class CacheInvalidationService:
except Exception as e:
logger.error(f"[CacheInvalidation] 失效 ModelCacheService 缓存失败: {e}")
# 4. 清除 /v1/models 列表缓存
from src.api.base.models_service import invalidate_models_list_cache
try:
await invalidate_models_list_cache()
except Exception as e:
logger.error(f"[CacheInvalidation] 失效 models list 缓存失败: {e}")
def on_model_changed(self, provider_id: str, global_model_id: str):
"""Model 变更时的缓存失效"""
self._refresh_provider_cache(provider_id)
def on_key_allowed_models_changed(self, provider_id: str) -> None:
async def on_key_allowed_models_changed(self, provider_id: str) -> None:
"""
Key 的 allowed_models 变更时的缓存失效
@@ -68,6 +76,14 @@ class CacheInvalidationService:
logger.info(f"[CacheInvalidation] Key allowed_models 变更: provider_id={provider_id}")
self._refresh_provider_cache(provider_id)
# 清除 /v1/models 列表缓存allowed_models 变更会影响模型可用性)
from src.api.base.models_service import invalidate_models_list_cache
try:
await invalidate_models_list_cache()
except Exception as e:
logger.error(f"[CacheInvalidation] 失效 models list 缓存失败: {e}")
def _refresh_provider_cache(self, provider_id: str) -> None:
"""刷新指定 Provider 的 ModelMapper 缓存"""
for mapper in self._model_mappers: