Files
AccountForger-neuerUpload/domain/entities/rate_limit_policy.py
Claude Project Manager 04585e95b6 Initial commit
2025-08-01 23:50:28 +02:00

36 Zeilen
1.2 KiB
Python

"""
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)