Spaces:
Running
Running
Commit Β·
856bef4
1
Parent(s): 38e1395
Add defensive error handling to blueprint imports for better HF Spaces debugging
Browse files
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 |
-
|
| 29 |
-
|
| 30 |
-
from routes.
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
-
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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'])
|