| from fastapi import HTTPException | |
| from utils.Logger import logger | |
| from utils.configs 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: | |
| logger.error(f"Throw an exception {e.status_code}, {e.detail}") | |
| if e.status_code == 500: | |
| raise HTTPException(status_code=500, detail="Server error") | |
| raise HTTPException(status_code=e.status_code, detail=e.detail) | |
| logger.info(f"Retry {attempt + 1} status code {e.status_code}, {e.detail}. 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: | |
| logger.error(f"Throw an exception {e.status_code}, {e.detail}") | |
| if e.status_code == 500: | |
| raise HTTPException(status_code=500, detail="Server error") | |
| raise HTTPException(status_code=e.status_code, detail=e.detail) | |
| logger.error(f"Retry {attempt + 1} status code {e.status_code}, {e.detail}. Retrying...") | |