mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-02 09:20:22 +08:00
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:
18
src/services/cache/invalidation.py
vendored
18
src/services/cache/invalidation.py
vendored
@@ -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:
|
||||
|
||||
@@ -360,7 +360,7 @@ class ModelFetchScheduler:
|
||||
if has_changed and provider_id:
|
||||
from src.services.model.global_model import on_key_allowed_models_changed
|
||||
|
||||
on_key_allowed_models_changed(
|
||||
await on_key_allowed_models_changed(
|
||||
db=db,
|
||||
provider_id=provider_id,
|
||||
allowed_models=list(key.allowed_models or []),
|
||||
|
||||
@@ -15,7 +15,7 @@ from src.models.database import GlobalModel, Model
|
||||
from src.models.pydantic_models import GlobalModelUpdate
|
||||
|
||||
|
||||
def on_key_allowed_models_changed(
|
||||
async def on_key_allowed_models_changed(
|
||||
db: Session,
|
||||
provider_id: str,
|
||||
allowed_models: List[str],
|
||||
@@ -24,7 +24,7 @@ def on_key_allowed_models_changed(
|
||||
Key 的 allowed_models 变更后的统一处理
|
||||
|
||||
包括:
|
||||
1. 触发缓存失效
|
||||
1. 触发缓存失效(包括 /v1/models 列表缓存)
|
||||
2. 检查并自动关联匹配的 GlobalModel
|
||||
|
||||
Args:
|
||||
@@ -36,7 +36,7 @@ def on_key_allowed_models_changed(
|
||||
|
||||
# 1. 触发缓存失效
|
||||
cache_service = get_cache_invalidation_service()
|
||||
cache_service.on_key_allowed_models_changed(provider_id)
|
||||
await cache_service.on_key_allowed_models_changed(provider_id)
|
||||
|
||||
# 2. 检查并自动关联 GlobalModel
|
||||
if allowed_models:
|
||||
|
||||
Reference in New Issue
Block a user