新增简易的8080面板😊

This commit is contained in:
Falck
2026-04-17 23:15:15 +08:00
parent c38d2f66d1
commit 9d19d09821
465 changed files with 9235 additions and 35285 deletions

View File

@@ -0,0 +1,39 @@
"""重试处理器"""
import time
import random
from typing import Callable, Any
from ..core.config import RetryConfig
from ..utils.logger import ProLogger
class RetryHandler:
"""重试处理器"""
def __init__(self, config: RetryConfig = None):
config = config or RetryConfig()
self.max_retries = config.max_retries
self.backoff_factor = config.backoff_factor
self.initial_delay = config.initial_delay
def execute(self, func: Callable, *args, **kwargs) -> Any:
"""执行带重试的调用"""
last_exception = None
for attempt in range(self.max_retries + 1):
try:
return func(*args, **kwargs)
except Exception as e:
last_exception = e
if attempt < self.max_retries:
delay = self._calculate_delay(attempt)
ProLogger.warn("retry", f"{attempt + 1} 次重试,等待 {delay:.1f}s: {e}")
time.sleep(delay)
raise last_exception
def _calculate_delay(self, attempt: int) -> float:
"""计算退避延迟"""
delay = self.initial_delay * (self.backoff_factor ** attempt)
jitter = random.uniform(0, delay * 0.1)
return delay + jitter