""" Rate Limit Policy Entity - Definiert Geschwindigkeitsregeln für verschiedene Aktionen """ from dataclasses import dataclass from typing import Optional @dataclass class RateLimitPolicy: """Definiert Geschwindigkeitsregeln für verschiedene Aktionen""" min_delay: float max_delay: float adaptive: bool = True backoff_multiplier: float = 1.5 max_retries: int = 3 def __post_init__(self): """Validierung der Policy-Parameter""" if self.min_delay < 0: raise ValueError("min_delay muss >= 0 sein") if self.max_delay < self.min_delay: raise ValueError("max_delay muss >= min_delay sein") if self.backoff_multiplier < 1.0: raise ValueError("backoff_multiplier muss >= 1.0 sein") if self.max_retries < 0: raise ValueError("max_retries muss >= 0 sein") def calculate_backoff_delay(self, attempt: int) -> float: """Berechnet Verzögerung basierend auf Versuchsnummer""" if not self.adaptive: return self.min_delay delay = self.min_delay * (self.backoff_multiplier ** attempt) return min(delay, self.max_delay)