fix: Mi2-Mi4 + Mi1 partial — version pins, file-lock, catalog lock, __main__ tests
- Mi2: requirements.txt — Obergrenzen hinzugefügt (<3.0, <5.0, etc.) - Mi3: cmd_scan() — File-Lock via fcntl (data_dir/.scan.lock) - Mi4: refresh_catalog() — Cache-Check unter self._lock (thread-safe) - Mi1: tests/test_main.py — 17 neue Tests (__main__ Coverage 10% → 18%) - 294/294 Tests grün
This commit is contained in:
parent
eeb3ac6c28
commit
de5be23d23
5 changed files with 287 additions and 12 deletions
|
|
@ -163,14 +163,16 @@ class ModelRouter:
|
|||
|
||||
def refresh_catalog(self) -> None:
|
||||
"""OpenRouter /models + lokale Server /models ziehen (24 h gecacht).
|
||||
Failsafe: blockiert nie."""
|
||||
Failsafe: blockiert nie. Thread-safe via self._lock."""
|
||||
if not self._refresh:
|
||||
return
|
||||
fetched_at = self._catalog.get("fetched_at")
|
||||
slugs = self._catalog.get("slugs") or []
|
||||
servers = self._catalog.get("servers") or {}
|
||||
if fetched_at and (slugs or servers) and (time.time() - fetched_at) < 86400:
|
||||
return # Cache frisch
|
||||
# Cache-Check unter Lock — vermeidet doppelte Fetches bei parallelen Scans
|
||||
with self._lock:
|
||||
fetched_at = self._catalog.get("fetched_at")
|
||||
slugs = self._catalog.get("slugs") or []
|
||||
servers = self._catalog.get("servers") or {}
|
||||
if fetched_at and (slugs or servers) and (time.time() - fetched_at) < 86400:
|
||||
return # Cache frisch
|
||||
|
||||
new_slugs, new_servers = [], {}
|
||||
# 1. OpenRouter-Katalog (primär)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue