prathamamritkar commited on
Commit
856bef4
Β·
1 Parent(s): 38e1395

Add defensive error handling to blueprint imports for better HF Spaces debugging

Browse files
Files changed (1) hide show
  1. app.py +72 -16
app.py CHANGED
@@ -25,13 +25,55 @@ from core import (
25
  JWT_SECRET, get_logger, log_request_middleware, get_db, get_db_status, LOG_LEVEL
26
  )
27
 
28
- from routes.auth_bp import auth_bp
29
- from routes.audits_bp import audits_bp
30
- from routes.kb_bp import kb_bp
31
- from routes.admin_bp import admin_bp
32
- from routes.dashboard_bp import dashboard_bp
33
- from routes.alerts_bp import alerts_bp
34
- from routes.agents_bp import agents_bp
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
 
36
  # ── Initialize logger ─────────────────────────────────────────────────────────
37
  log = get_logger(__name__)
@@ -110,15 +152,29 @@ def inject_global_template_vars():
110
  }
111
 
112
  # ── Register middleware & blueprints ──────────────────────────────────────────
113
- log_request_middleware(app)
114
-
115
- app.register_blueprint(auth_bp, url_prefix='/api/auth')
116
- app.register_blueprint(audits_bp, url_prefix='/api/audits')
117
- app.register_blueprint(kb_bp, url_prefix='/api/kb')
118
- app.register_blueprint(admin_bp, url_prefix='/api/admin')
119
- app.register_blueprint(dashboard_bp, url_prefix='/api/dashboard')
120
- app.register_blueprint(alerts_bp, url_prefix='/api/alerts')
121
- app.register_blueprint(agents_bp, url_prefix='/api/agents')
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
 
123
  # ── Health checks ─────────────────────────────────────────────────────────────
124
  @app.route('/api/health', methods=['GET'])
 
25
  JWT_SECRET, get_logger, log_request_middleware, get_db, get_db_status, LOG_LEVEL
26
  )
27
 
28
+ # Import blueprints with graceful fallback if any fail
29
+ try:
30
+ from routes.auth_bp import auth_bp
31
+ except Exception as e:
32
+ auth_bp = None
33
+ import traceback
34
+ print(f"ERROR: Failed to import auth_bp: {e}\n{traceback.format_exc()}")
35
+
36
+ try:
37
+ from routes.audits_bp import audits_bp
38
+ except Exception as e:
39
+ audits_bp = None
40
+ import traceback
41
+ print(f"ERROR: Failed to import audits_bp: {e}\n{traceback.format_exc()}")
42
+
43
+ try:
44
+ from routes.kb_bp import kb_bp
45
+ except Exception as e:
46
+ kb_bp = None
47
+ import traceback
48
+ print(f"ERROR: Failed to import kb_bp: {e}\n{traceback.format_exc()}")
49
+
50
+ try:
51
+ from routes.admin_bp import admin_bp
52
+ except Exception as e:
53
+ admin_bp = None
54
+ import traceback
55
+ print(f"ERROR: Failed to import admin_bp: {e}\n{traceback.format_exc()}")
56
+
57
+ try:
58
+ from routes.dashboard_bp import dashboard_bp
59
+ except Exception as e:
60
+ dashboard_bp = None
61
+ import traceback
62
+ print(f"ERROR: Failed to import dashboard_bp: {e}\n{traceback.format_exc()}")
63
+
64
+ try:
65
+ from routes.alerts_bp import alerts_bp
66
+ except Exception as e:
67
+ alerts_bp = None
68
+ import traceback
69
+ print(f"ERROR: Failed to import alerts_bp: {e}\n{traceback.format_exc()}")
70
+
71
+ try:
72
+ from routes.agents_bp import agents_bp
73
+ except Exception as e:
74
+ agents_bp = None
75
+ import traceback
76
+ print(f"ERROR: Failed to import agents_bp: {e}\n{traceback.format_exc()}")
77
 
78
  # ── Initialize logger ─────────────────────────────────────────────────────────
79
  log = get_logger(__name__)
 
152
  }
153
 
154
  # ── Register middleware & blueprints ──────────────────────────────────────────
155
+ try:
156
+ log_request_middleware(app)
157
+ except Exception as e:
158
+ log.warning(f"Failed to register request middleware: {e}")
159
+
160
+ blueprints_to_register = [
161
+ (auth_bp, '/api/auth'),
162
+ (audits_bp, '/api/audits'),
163
+ (kb_bp, '/api/kb'),
164
+ (admin_bp, '/api/admin'),
165
+ (dashboard_bp, '/api/dashboard'),
166
+ (alerts_bp, '/api/alerts'),
167
+ (agents_bp, '/api/agents'),
168
+ ]
169
+
170
+ for bp, url_prefix in blueprints_to_register:
171
+ if bp is None:
172
+ log.warning(f"Skipping blueprint registration for {url_prefix} β€” blueprint failed to import")
173
+ continue
174
+ try:
175
+ app.register_blueprint(bp, url_prefix=url_prefix)
176
+ except Exception as e:
177
+ log.error(f"Failed to register blueprint {bp.name} at {url_prefix}: {e}", exc_info=True)
178
 
179
  # ── Health checks ─────────────────────────────────────────────────────────────
180
  @app.route('/api/health', methods=['GET'])