Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -4,6 +4,7 @@ from datetime import datetime
|
|
| 4 |
import threading
|
| 5 |
import logging
|
| 6 |
import os
|
|
|
|
| 7 |
|
| 8 |
app = Flask(__name__)
|
| 9 |
|
|
@@ -34,33 +35,42 @@ except Exception as e:
|
|
| 34 |
models_loaded = False
|
| 35 |
loading_error = None
|
| 36 |
|
| 37 |
-
def
|
| 38 |
global models_loaded, loading_error
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
os.
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 61 |
|
| 62 |
# Start loading in background
|
| 63 |
-
threading.Thread(target=
|
| 64 |
|
| 65 |
@app.route('/')
|
| 66 |
def home():
|
|
|
|
| 4 |
import threading
|
| 5 |
import logging
|
| 6 |
import os
|
| 7 |
+
import time
|
| 8 |
|
| 9 |
app = Flask(__name__)
|
| 10 |
|
|
|
|
| 35 |
models_loaded = False
|
| 36 |
loading_error = None
|
| 37 |
|
| 38 |
+
def load_models_with_retries(max_retries=3, retry_delay=5):
|
| 39 |
global models_loaded, loading_error
|
| 40 |
+
for attempt in range(max_retries):
|
| 41 |
+
try:
|
| 42 |
+
logger.info(f"Attempt {attempt + 1}/{max_retries}: Starting model loading...")
|
| 43 |
+
|
| 44 |
+
# Import inside function to prevent circular imports
|
| 45 |
+
from src.retrieval import DocumentRetriever
|
| 46 |
+
from src.generation import ResponseGenerator
|
| 47 |
+
|
| 48 |
+
# Check if data file exists, create if not
|
| 49 |
+
data_path = 'data/rupeia_document.json'
|
| 50 |
+
if not os.path.exists(data_path):
|
| 51 |
+
os.makedirs('data', exist_ok=True)
|
| 52 |
+
with open(data_path, 'w') as f:
|
| 53 |
+
import json
|
| 54 |
+
json.dump(DEFAULT_DOCUMENTS, f)
|
| 55 |
+
logger.info("Created default data file")
|
| 56 |
+
|
| 57 |
+
# Initialize models with explicit cache directory
|
| 58 |
+
app.retriever = DocumentRetriever(cache_folder='/app/cache')
|
| 59 |
+
app.generator = ResponseGenerator()
|
| 60 |
+
models_loaded = True
|
| 61 |
+
logger.info("Models loaded successfully")
|
| 62 |
+
return
|
| 63 |
+
except Exception as e:
|
| 64 |
+
loading_error = str(e)
|
| 65 |
+
logger.error(f"Model loading failed: {loading_error}")
|
| 66 |
+
if attempt < max_retries - 1:
|
| 67 |
+
logger.info(f"Retrying in {retry_delay} seconds...")
|
| 68 |
+
time.sleep(retry_delay)
|
| 69 |
+
|
| 70 |
+
logger.error("All retry attempts failed. Models not loaded.")
|
| 71 |
|
| 72 |
# Start loading in background
|
| 73 |
+
threading.Thread(target=load_models_with_retries, daemon=True).start()
|
| 74 |
|
| 75 |
@app.route('/')
|
| 76 |
def home():
|