Hoster mit wiederholten Fehlern bekommen progressive Sperre:
1st fail -> 5s, 2nd -> 10s, 3rd -> 20s, 4th -> 30s, 5th -> 60s, 6th -> 300s, 7th+ -> 3600s (max)
Success resettet consecutive_fails auf 0.
consecutive_fails INTEGER DEFAULT 0-- Anzahl Fehler in Folge ohne Erfolgbackoff_until INTEGER DEFAULT 0-- Unix-Timestamp bis wann der Hoster gesperrt ist
| Kontext | Funktion | Logik |
|---|---|---|
| Vordergrund-Scan (sourcesFilter) | hoster_healthy(name) |
consecutive_fails == 0 -- streng, zeigt nur gesunde Hoster |
| BG-Precacher (Dispatch-Queries) | backoff_until <= now in SQL |
Zeitbasiert -- probiert nach Ablauf nochmal |
| BG-Probe (sources.py) | hoster_available(name, cooldown=0) |
Zeitbasiert wie Precacher |
Vordergrund ist strenger: Hoster mit consecutive_fails > 0 werden dem User gar nicht angezeigt. BG-Precacher probiert nach Backoff-Ablauf nochmal -- ein Erfolg dort resettet den Counter und macht den Hoster auch im Vordergrund wieder sichtbar.
hoster_touch(name, success) wird aufgerufen in:
| Datei | Stelle | Kontext |
|---|---|---|
precacher.py |
_resolve_single() |
BG-Precacher Resolve OK/Fail |
precacher.py |
_mediainfo_single() |
BG-Precacher Probe OK/Fail |
sources.py |
sourcesResolve() |
Vordergrund-Klick, Autoplay, Trailer |
sources.py |
_probe_single() |
BG-Probe nach Foreground-Scan |
Problem: Bei Netzwerk-Ausfall schlagen alle Hoster gleichzeitig fehl -> alle im Backoff -> naechster Scan zeigt 0 Quellen obwohl kein Hoster defekt ist.
Loesung: _last_success_at Modul-Level-Timestamp in sourcecacheDB.py.
- Wird bei jedem
hoster_touch(success=True)aufnowgesetzt hoster_touch(success=False)prueft: wenn_last_success_ataelter als 30s, war wahrscheinlich das Netz down -> Fail wird NICHT gezaehlt (kein Backoff-Increment)- Sobald das Netz wieder da ist und ein Hoster Erfolg hat, laeuft alles normal weiter
[xShip-Backoff] name: N consecutive fails, backoff Xs-- bei 4+ consecutive fails[sourcesFilter] N Quellen entfernt (Hoster fehlerhaft)-- Vordergrund-Filter[BG-Probe] N Quellen uebersprungen (Hoster im Backoff)-- BG-Probe-Filter- Hoster-Stats am Ende jedes Precache-Zyklus zeigen
backoff N fails