ayush2917 commited on
Commit
92e730e
·
verified ·
1 Parent(s): 5ae30d1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -24
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 load_models():
38
  global models_loaded, loading_error
39
- try:
40
- logger.info("Starting model loading...")
41
-
42
- # Import inside function to prevent circular imports
43
- from src.retrieval import DocumentRetriever
44
- from src.generation import ResponseGenerator
45
-
46
- # Check if data file exists, create if not
47
- data_path = 'data/rupeia_document.json'
48
- if not os.path.exists(data_path):
49
- os.makedirs('data', exist_ok=True)
50
- with open(data_path, 'w') as f:
51
- json.dump(DEFAULT_DOCUMENTS, f)
52
- logger.info("Created default data file")
53
-
54
- app.retriever = DocumentRetriever()
55
- app.generator = ResponseGenerator()
56
- models_loaded = True
57
- logger.info("Models loaded successfully")
58
- except Exception as e:
59
- loading_error = str(e)
60
- logger.error(f"Model loading failed: {loading_error}")
 
 
 
 
 
 
 
 
 
61
 
62
  # Start loading in background
63
- threading.Thread(target=load_models, daemon=True).start()
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():