Spaces:
Build error
Build error
| import time | |
| import requests | |
| from requests.adapters import HTTPAdapter | |
| from requests.packages.urllib3.util.retry import Retry | |
| from config.settings import MODEL_RETRY_ATTEMPTS, REQUEST_RETRY_ATTEMPTS, BACKOFF_FACTOR | |
| from utils.logger import setup_logger | |
| logger = setup_logger(__name__) | |
| class ModelLoader: | |
| def create_retry_session(): | |
| session = requests.Session() | |
| retry = Retry( | |
| total=REQUEST_RETRY_ATTEMPTS, | |
| backoff_factor=BACKOFF_FACTOR, | |
| status_forcelist=[500, 502, 503, 504] | |
| ) | |
| adapter = HTTPAdapter(max_retries=retry) | |
| session.mount('http://', adapter) | |
| session.mount('https://', adapter) | |
| return session | |
| def load_model_with_retry(model_name, model_class, **kwargs): | |
| for attempt in range(MODEL_RETRY_ATTEMPTS): | |
| try: | |
| logger.info(f"Loading model {model_name} (attempt {attempt + 1}/{MODEL_RETRY_ATTEMPTS})") | |
| return model_class.from_pretrained(model_name, **kwargs) | |
| except Exception as e: | |
| if attempt == MODEL_RETRY_ATTEMPTS - 1: | |
| logger.error(f"Failed to load model {model_name}: {str(e)}") | |
| raise | |
| logger.warning(f"Attempt {attempt + 1} failed, retrying...") | |
| time.sleep(2 ** attempt) | |