chat2api/utils/retry.py
2024-04-12 16:48:15 +08:00

27 lines
1006 B
Python

from utils.Logger import logger
from fastapi import HTTPException
from utils.config import retry_times
async def async_retry(func, *args, max_retries=retry_times, **kwargs):
for attempt in range(max_retries + 1):
try:
result = await func(*args, **kwargs)
return result
except HTTPException as e:
if attempt == max_retries:
raise HTTPException(status_code=e.status_code, detail=e.detail)
logger.info(f"Retry {attempt + 1} failed with status code {e.status_code}. Retrying...")
def retry(func, *args, max_retries=retry_times, **kwargs):
for attempt in range(max_retries + 1):
try:
result = func(*args, **kwargs)
return result
except HTTPException as e:
if attempt == max_retries:
raise HTTPException(status_code=e.status_code, detail=e.detail)
logger.info(f"Attempt {attempt + 1} failed with status code {e.status_code}. Retrying...")