@@ -2991,7 +2991,7 @@ def notify_generation_failure(
|
||||
|
||||
|
||||
def _asset_preview_url(asset) -> str:
|
||||
"""资产主文件的可公开访问 URL(已写绝对 URL 优先,否则实时签 TOS GET)。"""
|
||||
"""资产主文件的公读直链。写进会话的地址不能带签名,否则 1 小时后图片会消失。"""
|
||||
if asset is None:
|
||||
return ""
|
||||
primary = asset.files.filter(is_primary=True).first() or asset.files.first()
|
||||
@@ -2999,16 +2999,16 @@ def _asset_preview_url(asset) -> str:
|
||||
return ""
|
||||
if primary.preview_url:
|
||||
return primary.preview_url
|
||||
if not primary.object_key:
|
||||
return ""
|
||||
try:
|
||||
return TosStorage().presigned_get_url(object_key=primary.object_key)
|
||||
return TosStorage().public_url(object_key=primary.object_key, bucket=primary.bucket or None)
|
||||
except Exception:
|
||||
return ""
|
||||
|
||||
|
||||
def asset_stable_url(asset) -> tuple[str, str]:
|
||||
"""资产的「长期可打开」直链 (主文件, 封面图)。历史记录这类隔天还要点开的场景必须用这个:
|
||||
预签名链只活 1 小时,存进 payload 快照的话第二天就播不了 —— 公读直链不过期还能被缓存。
|
||||
顺序:落库 preview_url → TOS 公读直链 → 兜底预签名。"""
|
||||
"""资产的长期直链 (主文件, 封面图)。公读地址不过期,结果卡隔天还能打开。"""
|
||||
if asset is None:
|
||||
return "", ""
|
||||
files = list(asset.files.all())
|
||||
@@ -3031,10 +3031,6 @@ def asset_stable_url(asset) -> tuple[str, str]:
|
||||
return ""
|
||||
try:
|
||||
return TosStorage().public_url(object_key=f.object_key, bucket=f.bucket or None)
|
||||
except Exception: # noqa: BLE001
|
||||
pass
|
||||
try:
|
||||
return TosStorage().presigned_get_url(object_key=f.object_key)
|
||||
except Exception: # noqa: BLE001
|
||||
return ""
|
||||
|
||||
|
||||
@@ -1780,12 +1780,20 @@ class ModelConfigViewSet(ReadOnlyModelViewSet):
|
||||
)
|
||||
cache_key = MODEL_CATALOG_CACHE_KEY if page_size in {"", "200"} else f"{MODEL_CATALOG_CACHE_KEY}:{page_size}"
|
||||
if is_plain:
|
||||
cached = cache.get(cache_key)
|
||||
# 模型目录缓存只是加速层;开发机或 Redis 短暂不可用时仍应正常返回目录。
|
||||
try:
|
||||
cached = cache.get(cache_key)
|
||||
except Exception:
|
||||
logger.warning("模型目录缓存不可用,改为直接读取", exc_info=True)
|
||||
cached = None
|
||||
if cached is not None:
|
||||
return Response(cached)
|
||||
response = super().list(request, *args, **kwargs)
|
||||
if is_plain and response.status_code == 200:
|
||||
cache.set(cache_key, response.data, MODEL_CATALOG_CACHE_TTL)
|
||||
try:
|
||||
cache.set(cache_key, response.data, MODEL_CATALOG_CACHE_TTL)
|
||||
except Exception:
|
||||
logger.warning("模型目录缓存写入失败,已返回直读结果", exc_info=True)
|
||||
return response
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user