mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-06-09 12:39:23 -03:00
fix(metadata): suppress rate-limit propagation when model already confirmed deleted
When CivitAI returns 404 (ResourceNotFoundError) and a fallback provider like CivArchive subsequently rate-limits, the ChainedMetadataProvider now suppresses the RateLimitError instead of propagating it. Previously, the rate-limit error would bubble up through _refresh_single_model and cause the outer retry loop to re-process the same model repeatedly, producing dozens of duplicate "Model X is no longer available" log messages and wasting API quota. The model is NOT permanently marked as ignored — its last_checked_at timestamp is preserved, so it will be retried on the next refresh cycle when the rate limit has cleared and CivArchive may still have the data. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -5,7 +5,7 @@ import logging
|
||||
import random
|
||||
from typing import Optional, Dict, Tuple, Any, List, Sequence
|
||||
from .downloader import get_downloader
|
||||
from .errors import RateLimitError
|
||||
from .errors import RateLimitError, ResourceNotFoundError
|
||||
|
||||
try:
|
||||
from bs4 import BeautifulSoup
|
||||
@@ -482,6 +482,7 @@ class FallbackMetadataProvider(ModelMetadataProvider):
|
||||
return None, "Model not found"
|
||||
|
||||
async def get_model_versions(self, model_id: str) -> Optional[Dict]:
|
||||
not_found_confirmed = False
|
||||
for provider, label in self._iter_providers():
|
||||
try:
|
||||
result = await self._call_with_rate_limit(
|
||||
@@ -492,8 +493,24 @@ class FallbackMetadataProvider(ModelMetadataProvider):
|
||||
if result:
|
||||
return result
|
||||
except RateLimitError as exc:
|
||||
if not_found_confirmed:
|
||||
logger.debug(
|
||||
"Suppressing rate limit from %s for model %s: "
|
||||
"already confirmed as not found by another provider",
|
||||
label,
|
||||
model_id,
|
||||
)
|
||||
return None
|
||||
exc.provider = exc.provider or label
|
||||
raise exc
|
||||
except ResourceNotFoundError:
|
||||
not_found_confirmed = True
|
||||
logger.debug(
|
||||
"Provider %s reports model %s as not found",
|
||||
label,
|
||||
model_id,
|
||||
)
|
||||
continue
|
||||
except Exception as e:
|
||||
logger.debug("Provider %s failed for get_model_versions: %s", label, e)
|
||||
continue
|
||||
|
||||
Reference in New Issue
Block a user