fix: address code review findings

- Add retry (2 attempts) on CivitAI 429 rate limit instead of silently skipping
- Use check_same_thread=False for SQLite connection (aiohttp context)
- Add debug logging to silent exception handlers in proxy

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-15 14:44:12 +01:00
parent 63ddaaa70d
commit f6e39df157
3 changed files with 24 additions and 21 deletions
+19 -16
View File
@@ -72,25 +72,28 @@ class StatsFetchService:
)
return self._session
async def _fetch_model(self, model_id: int) -> dict | None:
async def _fetch_model(self, model_id: int, _retries: int = 2) -> dict | None:
"""Fetch a single model's data from CivitAI API."""
url = f"{_CIVITAI_API}/models/{model_id}"
session = await self._get_session()
try:
async with session.get(url) as resp:
if resp.status == 429:
logger.warning("[LM-Remote] CivitAI rate limited, backing off")
await asyncio.sleep(5)
return None
if resp.status != 200:
logger.debug("[LM-Remote] CivitAI returned %d for model %d",
resp.status, model_id)
return None
return await resp.json()
except Exception as exc:
logger.warning("[LM-Remote] CivitAI fetch failed for model %d: %s",
model_id, exc)
return None
for attempt in range(_retries + 1):
try:
async with session.get(url) as resp:
if resp.status == 429:
logger.warning("[LM-Remote] CivitAI rate limited, backing off (attempt %d)",
attempt + 1)
await asyncio.sleep(5 * (attempt + 1))
continue
if resp.status != 200:
logger.debug("[LM-Remote] CivitAI returned %d for model %d",
resp.status, model_id)
return None
return await resp.json()
except Exception as exc:
logger.warning("[LM-Remote] CivitAI fetch failed for model %d: %s",
model_id, exc)
return None
return None
async def fetch_stats_for_models(
self,