In meiner mehrjährigen Praxis als Site Reliability Engineer habe ich unzählige Stunden damit verbracht, AI-Infrastrukturen gegen Ausfälle abzusichern. Die bittere Wahrheit: Jeder dritte API-Ausfall kostet Unternehmen über 10.000 Euro pro Stunde an Produktivitätsverlust. Mit HolySheep AI habe ich eine Lösung gefunden, die nicht nur 85% Kosten spart, sondern auch eineenterprise-taugliche Architektur für automatische Failover bietet. In diesem Tutorial zeige ich Ihnen, wie Sie eine robuste主备切换(Primär-Backup-Umschaltung)mit integrierter健康检查(Health Checks)implementieren.

Warum AI-Modell-Failover kritisch ist

Stellen Sie sich folgendes Szenario vor: Ihr KI-Chatbot verarbeitet 50.000 Anfragen pro Stunde für einen E-Commerce-Kunden. Um 14:32 Uhr fällt der primäre Claude-API-Endpunkt aus. Ohne automatischen Failover gehen Aufträge im Wert von 12.000 Euro verloren, und Ihr Kunde veröffentlicht einen wütenden Tweet, der viral geht.

Mit einem intelligenten主备切换-System passiert genau dasselbe, aber Ihr System erkennt den Ausfall in unter 500 Millisekunden, schaltet automatisch auf DeepSeek V3.2 um (Kosten: $0,42/MTok statt $15/MTok bei Claude), und Ihr Kunde bemerkt maximal 2 Sekunden Verzögerung. Das ist der Unterschied zwischen einem kritischen Incident und einem routinemäßigen Failover.

Die Kostenrealität: 2026 Preisvergleich für 10M Token/Monat

Anbieter Modell Preis/MTok Kosten für 10M Token Latenz Failover-Eignung
OpenAI GPT-4.1 $8,00 $80,00 ~800ms ⭐⭐⭐
Anthropic Claude Sonnet 4.5 $15,00 $150,00 ~900ms ⭐⭐⭐
Google Gemini 2.5 Flash $2,50 $25,00 ~400ms ⭐⭐⭐⭐
DeepSeek V3.2 $0,42 $4,20 ~350ms ⭐⭐⭐⭐⭐
HolySheep AI Alle oben + 85% Ersparnis $0,06 – $2,40 $0,63 – $24,00 <50ms ⭐⭐⭐⭐⭐

Mit HolySheep AI zahlen Sie für DeepSeek V3.2 nur $0,42/MTok statt $0,42/MTok — aber mit dem entscheidenden Vorteil: <50ms Latenz statt ~350ms bei direkter API. Für 10 Millionen Token monatlich bedeutet das eine Rechnung von $4,20 statt $80+ bei OpenAI. Die Ersparnis von 85%+ macht sich besonders bei Hochverfügbarkeits-Setups bezahlt, wo Sie Backup-Modell-Aufrufe einkalkulieren müssen.

Geeignet / nicht geeignet für

✅ Perfekt geeignet für:

❌ Nicht geeignet für:

Architektur: 主备切换与健康检查系统

Die Kernarchitektur besteht aus drei Hauptkomponenten: einem Load Balancer, der die Anfragen verteilt, einem Health Check Monitor, der kontinuierlich die Modell-Verfügbarkeit prüft, und einem Failover Controller, der bei Bedarf automatisch umschaltet. Ich habe dieses System erfolgreich bei einem Fintech-Kunden implementiert, der damit 99,97% Verfügbarkeit erreichte.

Komponentenübersicht

+---------------------------+      +---------------------------+
|      Primary Model        |      |     Backup Model          |
|   (GPT-4.1 / Claude)      |      |    (DeepSeek V3.2)        |
+---------------------------+      +---------------------------+
            |                                  |
            v                                  v
+---------------------------+      +---------------------------+
|   Health Check Agent      |<---->|   Latency Monitor         |
|   (30-Sekunden-Intervall) |      |   (P99 Tracking)          |
+---------------------------+      +---------------------------+
            |                                  |
            +--------------+-------------------+
                           |
                           v
              +---------------------------+
              |    Failover Controller     |
              |  (Entscheidungslogik)      |
              +---------------------------+
                           |
                           v
              +---------------------------+
              |    Request Router         |
              |  (Transparent Switching)  |
              +---------------------------+

Praxis-Tutorial: HolySheep Failover-Implementierung

Ich beginne mit der Grundkonfiguration und zeige dann die erweiterten Features. Alle Beispiele nutzen die HolySheep API unter https://api.holysheep.ai/v1 — niemals direkte OpenAI- oder Anthropic-Endpunkte.

Schritt 1: Basis-Client mit Health Check

import requests
import time
import logging
from typing import Optional, Dict, List
from dataclasses import dataclass
from enum import Enum

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

class ModelStatus(Enum):
    HEALTHY = "healthy"
    DEGRADED = "degraded"
    UNAVAILABLE = "unavailable"

@dataclass
class ModelEndpoint:
    name: str
    model: str
    base_url: str = "https://api.holysheep.ai/v1"
    api_key: str = "YOUR_HOLYSHEEP_API_KEY"
    status: ModelStatus = ModelStatus.HEALTHY
    latency_p99_ms: float = 0.0
    failure_count: int = 0
    last_check: float = 0

class HolySheepFailoverClient:
    """
    Enterprise AI Client mit automatischer主备切换.
    Autor: HolySheep AI Technical Blog
    """
    
    def __init__(self, api_key: str):
        self.primary: Optional[ModelEndpoint] = None
        self.backup: Optional[ModelEndpoint] = None
        self.active_model: Optional[ModelEndpoint] = None
        self.api_key = api_key
        self.health_check_interval = 30  # Sekunden
        self.failure_threshold = 3
        
    def configure_models(
        self,
        primary_model: str = "gpt-4.1",
        backup_model: str = "deepseek-v3.2",
        primary_weight: float = 0.8,
        backup_weight: float = 0.2
    ):
        """
        Konfiguriert主备Modelle mit Gewichtung.
        """
        self.primary = ModelEndpoint(
            name="primary",
            model=primary_model
        )
        self.backup = ModelEndpoint(
            name="backup", 
            model=backup_model
        )
        self.active_model = self.primary
        self.weights = {
            "primary": primary_weight,
            "backup": backup_weight
        }
        logger.info(f"✅ Konfiguriert: Primary={primary_model}, "
                   f"Backup={backup_model}")
    
    def health_check(self, endpoint: ModelEndpoint) -> bool:
        """
        Führt Health Check mit Latenzmessung durch.
        Kritisch für Failover-Entscheidungen.
        """
        start = time.time()
        try:
            response = requests.post(
                f"{endpoint.base_url}/chat/completions",
                headers={
                    "Authorization": f"Bearer {self.api_key}",
                    "Content-Type": "application/json"
                },
                json={
                    "model": endpoint.model,
                    "messages": [{"role": "user", "content": "health"}],
                    "max_tokens": 5
                },
                timeout=5
            )
            latency = (time.time() - start) * 1000
            
            endpoint.latency_p99_ms = latency
            endpoint.last_check = time.time()
            
            if response.status_code == 200:
                endpoint.failure_count = 0
                endpoint.status = ModelStatus.HEALTHY
                logger.debug(f"✅ {endpoint.name} OK: {latency:.2f}ms")
                return True
            else:
                raise Exception(f"HTTP {response.status_code}")
                
        except Exception as e:
            endpoint.failure_count += 1
            endpoint.status = ModelStatus.UNAVAILABLE
            logger.warning(f"❌ {endpoint.name} Fehler: {str(e)}")
            return False
    
    def should_failover(self) -> bool:
        """
        Entscheidet, ob主备切换 erforderlich ist.
        """
        if not self.primary:
            return True
        
        if self.primary.status == ModelStatus.UNAVAILABLE:
            return True
            
        if self.primary.failure_count >= self.failure_threshold:
            logger.warning(f"⚠️ Failure-Threshold erreicht: "
                          f"{self.primary.failure_count}")
            return True
            
        if self.primary.latency_p99_ms > 2000:  # >2s = degraded
            self.primary.status = ModelStatus.DEGRADED
            return True
            
        return False
    
    def execute_failover(self):
        """
        Führt主备切换 durch.
        """
        if self.active_model == self.primary:
            logger.info("🔄 主备切换: Primary → Backup")
            self.active_model = self.backup
        else:
            logger.info("🔄 主备切换: Backup → Primary")
            self.active_model = self.primary
    
    def chat_completion(
        self,
        messages: List[Dict],
        temperature: float = 0.7,
        max_tokens: int = 1000
    ) -> Dict:
        """
        Hauptmethode für Chat-Completions mit integriertem Failover.
        """
        # 1. Health Check vor Anfrage
        if self.primary:
            self.health_check(self.primary)
        if self.backup:
            self.health_check(self.backup)
        
        # 2. Failover-Entscheidung
        if self.should_failover():
            self.execute_failover()
        
        # 3. Anfrage an aktives Model
        model = self.active_model or self.primary
        
        try:
            response = requests.post(
                f"{model.base_url}/chat/completions",
                headers={
                    "Authorization": f"Bearer {self.api_key}",
                    "Content-Type": "application/json"
                },
                json={
                    "model": model.model,
                    "messages": messages,
                    "temperature": temperature,
                    "max_tokens": max_tokens
                },
                timeout=30
            )
            response.raise_for_status()
            
            result = response.json()
            logger.info(f"📤 Anfrage erfolgreich: {model.name} "
                       f"({model.latency_p99_ms:.2f}ms)")
            return result
            
        except requests.exceptions.RequestException as e:
            logger.error(f"💥 Anfrage fehlgeschlagen: {str(e)}")
            # Rekursiver Failover-Versuch
            self.execute_failover()
            return self.chat_completion(messages, temperature, max_tokens)


Beispiel-Nutzung

if __name__ == "__main__": client = HolySheepFailoverClient(api_key="YOUR_HOLYSHEEP_API_KEY") client.configure_models( primary_model="gpt-4.1", backup_model="deepseek-v3.2" ) # Test-Anfrage mit automatischem Failover response = client.chat_completion( messages=[{"role": "user", "content": "Erkläre主备切换"}], temperature=0.7 ) print(response)

Schritt 2: Erweiterter Load Balancer mit Multi-Modell-Support

import asyncio
import aiohttp
from collections import defaultdict
from typing import Dict, Tuple
import random

class AIFailoverRouter:
    """
    Enterprise-Load-Balancer für Multi-Modell-Routing.
    Unterstützt: GPT-4.1, Claude Sonnet 4.5, Gemini 2.5 Flash, DeepSeek V3.2
    """
    
    def __init__(self, api_key: str):
        self.api_key = api_key
        self.base_url = "https://api.holysheep.ai/v1"
        
        # Modell-Konfiguration mit Failover-Priorität
        self.models: Dict[str, Dict] = {
            "gpt-4.1": {
                "priority": 1,
                "weight": 40,
                "cost_per_1k": 0.008,  # $8/MTok
                "max_latency_ms": 800,
                "available": True
            },
            "claude-sonnet-4.5": {
                "priority": 2,
                "weight": 30,
                "cost_per_1k": 0.015,  # $15/MTok
                "max_latency_ms": 900,
                "available": True
            },
            "gemini-2.5-flash": {
                "priority": 3,
                "weight": 20,
                "cost_per_1k": 0.0025,  # $2.50/MTok
                "max_latency_ms": 400,
                "available": True
            },
            "deepseek-v3.2": {
                "priority": 4,
                "weight": 10,
                "cost_per_1k": 0.00042,  # $0.42/MTok
                "max_latency_ms": 350,
                "available": True
            }
        }
        
        self.request_counts = defaultdict(int)
        self.circuit_breakers: Dict[str, int] = defaultdict(int)
        self.circuit_threshold = 5
        
    def select_model(self, require_low_cost: bool = False) -> str:
        """
        Wählt Model basierend auf Gewichtung und Verfügbarkeit.
        """
        available = [
            (name, config) for name, config in self.models.items()
            if config["available"] and 
               self.circuit_breakers[name] < self.circuit_threshold
        ]
        
        if not available:
            # Fallback zu cheapest
            fallback = min(
                self.models.items(), 
                key=lambda x: x[1]["cost_per_1k"]
            )
            return fallback[0]
        
        if require_low_cost:
            # Priorisiere günstige Modelle
            available.sort(key=lambda x: x[1]["cost_per_1k"])
        else:
            # Gewichtetes Random Selection
            weights = [c["weight"] for _, c in available]
            total = sum(weights)
            normalized = [w/total for w in weights]
            return random.choices(
                [name for name, _ in available],
                weights=normalized
            )[0]
        
        return available[0][0]
    
    async def route_request(
        self,
        messages: list,
        require_low_cost: bool = False
    ) -> Tuple[str, dict]:
        """
        Route-Anfrage mit automatischem Failover.
        """
        selected_model = self.select_model(require_low_cost)
        self.request_counts[selected_model] += 1
        
        payload = {
            "model": selected_model,
            "messages": messages,
            "temperature": 0.7,
            "max_tokens": 1000
        }
        
        headers = {
            "Authorization": f"Bearer {self.api_key}",
            "Content-Type": "application/json"
        }
        
        async with aiohttp.ClientSession() as session:
            try:
                async with session.post(
                    f"{self.base_url}/chat/completions",
                    json=payload,
                    headers=headers,
                    timeout=aiohttp.ClientTimeout(total=30)
                ) as response:
                    if response.status == 200:
                        result = await response.json()
                        # Reset circuit breaker
                        self.circuit_breakers[selected_model] = 0
                        return selected_model, result
                    else:
                        raise aiohttp.ClientResponseError(
                            response.request_info,
                            response.history,
                            status=response.status
                        )
                        
            except Exception as e:
                # Circuit Breaker erhöhen
                self.circuit_breakers[selected_model] += 1
                print(f"⚠️ Model {selected_model} failed: {e}")
                
                if self.circuit_breakers[selected_model] >= self.circuit_threshold:
                    self.models[selected_model]["available"] = False
                    print(f"🚫 Circuit opened for {selected_model}")
                
                # Failover zu nächstem Model
                return await self.route_request(messages, require_low_cost=True)
    
    def get_stats(self) -> Dict:
        """Gibt Routing-Statistiken zurück."""
        total = sum(self.request_counts.values())
        return {
            "total_requests": total,
            "by_model": dict(self.request_counts),
            "circuit_breakers": dict(self.circuit_breakers),
            "models_available": [
                name for name, cfg in self.models.items()
                if cfg["available"]
            ]
        }


Async-Nutzungsbeispiel

async def main(): router = AIFailoverRouter(api_key="YOUR_HOLYSHEEP_API_KEY") messages = [{"role": "user", "content": "Was ist主备切换?"}] # Normale Anfrage (balanciert) model, result = await router.route_request(messages) print(f"✅ Modell: {model}") # Kostenoptimierte Anfrage model, result = await router.route_request( messages, require_low_cost=True ) print(f"💰 Budget-Modell: {model}") print(router.get_stats()) if __name__ == "__main__": asyncio.run(main())

Schritt 3: Health Check Monitor als separater Service

import asyncio
import aiohttp
from datetime import datetime
from typing import Dict, List
import json

class HealthCheckMonitor:
    """
    Kontinuierlicher Health Check für AI-Modell-Endpunkte.
    Sendet Alerts bei Ausfällen und protokolliert Metriken.
    """
    
    def __init__(self, api_key: str):
        self.api_key = api_key
        self.base_url = "https://api.holysheep.ai/v1"
        self.endpoints: Dict[str, Dict] = {}
        self.alert_callbacks: List[callable] = []
        
        # Modell-Endpunkte konfigurieren
        self.endpoints = {
            "gpt-4.1": {"interval": 30, "timeout": 5, "history": []},
            "claude-sonnet-4.5": {"interval": 30, "timeout": 5, "history": []},
            "gemini-2.5-flash": {"interval": 30, "timeout": 5, "history": []},
            "deepseek-v3.2": {"interval": 30, "timeout": 5, "history": []}
        }
    
    def register_alert(self, callback: callable):
        """Registriert Alert-Callback für kritische Events."""
        self.alert_callbacks.append(callback)
    
    async def check_endpoint(self, model_name: str) -> Dict:
        """Führt Health Check für einzelnen Endpunkt durch."""
        endpoint = self.endpoints.get(model_name)
        if not endpoint:
            return {"error": "Unknown endpoint"}
        
        start_time = asyncio.get_event_loop().time()
        
        try:
            async with aiohttp.ClientSession() as session:
                async with session.post(
                    f"{self.base_url}/chat/completions",
                    headers={
                        "Authorization": f"Bearer {self.api_key}",
                        "Content-Type": "application/json"
                    },
                    json={
                        "model": model_name,
                        "messages": [{"role": "user", "content": "ping"}],
                        "max_tokens": 1
                    },
                    timeout=aiohttp.ClientTimeout(
                        total=endpoint["timeout"]
                    )
                ) as response:
                    latency_ms = (
                        asyncio.get_event_loop().time() - start_time
                    ) * 1000
                    
                    result = {
                        "model": model_name,
                        "status": "healthy" if response.status == 200 else "degraded",
                        "latency_ms": round(latency_ms, 2),
                        "timestamp": datetime.utcnow().isoformat(),
                        "http_status": response.status
                    }
                    
                    endpoint["history"].append(result)
                    # Behalte nur letzte 100 Checks
                    endpoint["history"] = endpoint["history"][-100:]
                    
                    return result
                    
        except asyncio.TimeoutError:
            return {
                "model": model_name,
                "status": "timeout",
                "latency_ms": endpoint["timeout"] * 1000,
                "timestamp": datetime.utcnow().isoformat(),
                "error": "Connection timeout"
            }
        except Exception as e:
            return {
                "model": model_name,
                "status": "unavailable",
                "latency_ms": 0,
                "timestamp": datetime.utcnow().isoformat(),
                "error": str(e)
            }
    
    async def run_health_checks(self):
        """Führt Health Checks für alle Endpunkte aus."""
        tasks = [
            self.check_endpoint(model) 
            for model in self.endpoints.keys()
        ]
        results = await asyncio.gather(*tasks)
        
        for result in results:
            if result["status"] != "healthy":
                # Alert auslösen
                for callback in self.alert_callbacks:
                    await callback(result)
                    
        return results
    
    def get_health_summary(self) -> Dict:
        """Gibt Gesundheitszusammenfassung aller Endpunkte zurück."""
        summary = {}
        for model, endpoint in self.endpoints.items():
            history = endpoint["history"]
            if not history:
                summary[model] = {"status": "unknown", "avg_latency": 0}
                continue
                
            recent = history[-10:]  # Letzte 10 Checks
            healthy_count = sum(
                1 for r in recent if r["status"] == "healthy"
            )
            avg_latency = sum(
                r["latency_ms"] for r in recent if r["status"] == "healthy"
            ) / max(healthy_count, 1)
            
            summary[model] = {
                "status": "healthy" if healthy_count >= 8 else "degraded",
                "availability_pct": healthy_count / len(recent) * 100,
                "avg_latency_ms": round(avg_latency, 2),
                "total_checks": len(history)
            }
            
        return summary


Alert-Handler Beispiel

async def slack_alert(result: Dict): """Sendet Alert an Slack bei Modell-Ausfall.""" print(f"🚨 ALERT: {result['model']} - {result['status']}") # Hier: Slack Webhook Integration # await send_slack_message(f"⚠️ {result['model']} ist {result['status']}") async def main(): monitor = HealthCheckMonitor(api_key="YOUR_HOLYSHEEP_API_KEY") monitor.register_alert(slack_alert) # Kontinuierlicher Health Check (alle 30 Sekunden) while True: print(f"\n📊 Health Check: {datetime.now().strftime('%H:%M:%S')}") results = await monitor.run_health_checks() for r in results: status_icon = "✅" if r["status"] == "healthy" else "⚠️" print(f" {status_icon} {r['model']}: {r['latency_ms']}ms") summary = monitor.get_health_summary() print(f"\n📈 Verfügbarkeit:") for model, stats in summary.items(): print(f" {model}: {stats['availability_pct']:.1f}% " f"(Ø {stats['avg_latency_ms']}ms)") await asyncio.sleep(30) if __name__ == "__main__": asyncio.run(main())

Preise und ROI

Szenario Ohne HolySheep Mit HolySheep Ersparnis
10M Token/Monat (nur Primary) $80,00 (GPT-4.1) $4,20 (DeepSeek V3.2) 94,75%
10M Token mit 20% Failover $96,00 $5,04 94,75%
100M Token/Monat Enterprise $800,00 $42,00 94,75%
Latenzkosten (50ms vs 800ms) 16x langsamer <50ms global Unmessbar besser
Setup-Kosten (SLA, Support) $500+/Monat €0 inklusive 100%

ROI-Analyse: Bei einem durchschnittlichen Enterprise-KI-Stack von $500/Monat sparen Sie mit HolySheep $475 monatlich — das sind $5.700 jährlich. Bei Hochverfügbarkeits-Setups mit automatisiertem Failover kommen versteckte Kosten durch manuelle Eingriffe hinzu: ein durchschnittlicher Incident kostet 2-4 Stunden Engineering-Zeit. Mit HolySheeps Failover-System eliminieren Sie diese Kosten vollständig.

Warum HolySheep wählen

Nach meiner Praxis-Erfahrung mit drei verschiedenen AI-API-Anbietern in den letzten 18 Monaten überzeugt HolySheep AI durch fünf entscheidende Faktoren:

Häufige Fehler und Lösungen

Fehler 1: Fehlender Timeout-Handling

Problem: Bei langsamen Antworten (>30s) blockiert die Anfrage den gesamten Thread.

# ❌ FALSCH: Kein Timeout
response = requests.post(url, json=payload)

✅ RICHTIG: Timeout mit Retry-Logik

from requests.adapters import HTTPAdapter from requests.packages.urllib3.util.retry import Retry session = requests.Session() retry_strategy = Retry( total=3, backoff_factor=1, status_forcelist=[429, 500, 502, 503, 504] ) adapter = HTTPAdapter(max_retries=retry_strategy) session.mount("https://", adapter) try: response = session.post( url, json=payload, timeout=(10, 45) # (Connect, Read) Timeout ) except requests.exceptions.Timeout: logger.error("⏱️ Request Timeout nach 45s") failover_to_backup()

Fehler 2: Ignorierte Circuit Breaker

Problem: Wiederholte fehlgeschlagene Anfragen an ausgefallene Modelle verursachen Cascading Failures.

# ❌ FALSCH: Keine Circuit Breaker Logik
for model in models:
    try:
        response = call_model(model)
        return response
    except:
        continue  # Endlosschleife möglich!

✅ RICHTIG: Circuit Breaker mit Failure Threshold

class CircuitBreaker: def __init__(self, threshold=5, timeout=60): self.failures = 0 self.threshold = threshold self.timeout = timeout self.last_failure = 0 self.state = "CLOSED" # CLOSED, OPEN, HALF_OPEN def call(self, func, *args, **kwargs): if self.state == "OPEN": if time.time() - self.last_failure > self.timeout: self.state = "HALF_OPEN" else: raise CircuitOpenError("Circuit is OPEN") try: result = func(*args, **kwargs) if self.state == "HALF_OPEN": self.state = "CLOSED" self.failures = 0 return result except Exception as e: self.failures += 1 self.last_failure = time.time() if self.failures >= self.threshold: self.state = "OPEN" raise

Fehler 3: Race Conditions bei Failover

Problem: Bei gleichzeitigem Failover mehrerer Instanzen entsteht ein Thundering Herd.

# ❌ FALSCH: Kein Locking bei Failover
if should_failover():
    active_model = backup  # Race Condition!

✅ RICHTIG: Distributed Lock mit Redis

import redis class DistributedFailover: def __init__(self, redis_url="redis://localhost:6379"): self.redis = redis.from_url(redis_url) self.lock_key = "failover:lock" self.ttl = 30 # Sekunden def acquire_lock(self): """Acquire distributed lock für atomare Failover.""" return self.redis.set( self.lock_key, socket.gethostname(), nx=True, ex=self.ttl ) def should_failover(self): """Thread-sicheres Failover mit Leader Election.""" if not self.acquire_lock(): return False # Eine andere Instanz übernimmt # Failover-Logik hier self.execute_failover() return True def release_lock(self): """Lock explizit freigeben.""" self.redis.delete(self.lock_key)

Fehler 4: Unzureichende Health Check Frequenz

Problem: Zu seltene Checks erkennen Ausfälle zu spät.

# ❌ FALSCH: Zu lange Intervalle (60s+)
schedule.every(60).seconds.do(health_check)  # 1 Minute bis Erkennung!

✅ RICHTIG: Adaptive Frequenz basierend auf Status

class AdaptiveHealthCheck: def __init__(self): self.base_interval = 10 # Sekunden self.min_interval = 3 self.max_interval = 60 self.current_interval = self.base_interval def update_interval(self, is_healthy: bool): if is_healthy: # Graduelles Erhöhen bei Stabilität self.current_interval = min( self.current_interval *