toddmattingly commited on
Commit
bb73494
·
verified ·
1 Parent(s): 830f11f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -17
app.py CHANGED
@@ -1,5 +1,5 @@
1
  # -----------------------------------------------------------
2
- # SuperKart Backend API - Flask Application
3
  # -----------------------------------------------------------
4
 
5
  from flask import Flask, request, jsonify
@@ -9,15 +9,14 @@ import joblib
9
  import os
10
 
11
  # -----------------------------------------------------------
12
- # App setup
13
  # -----------------------------------------------------------
14
  app = Flask(__name__)
15
  CORS(app)
16
 
17
- MODEL_PATH = "model.joblib"
18
  model = None
19
 
20
-
21
  # -----------------------------------------------------------
22
  # Load model
23
  # -----------------------------------------------------------
@@ -32,7 +31,7 @@ def load_model():
32
 
33
 
34
  # -----------------------------------------------------------
35
- # Home / Health endpoint
36
  # -----------------------------------------------------------
37
  @app.route("/", methods=["GET"])
38
  def home():
@@ -45,29 +44,39 @@ def home():
45
 
46
 
47
  # -----------------------------------------------------------
48
- # Routes endpoint (debugging)
49
  # -----------------------------------------------------------
50
  @app.route("/routes", methods=["GET"])
51
  def show_routes():
52
- """List all registered endpoints for debugging."""
53
  routes = [str(rule) for rule in app.url_map.iter_rules()]
54
  return jsonify({"available_routes": routes})
55
 
56
 
57
  # -----------------------------------------------------------
58
- # Prediction endpoint
 
 
 
 
 
 
 
 
59
  # -----------------------------------------------------------
60
  @app.route("/predict", methods=["POST"])
61
  def predict():
62
- """Accepts JSON input and returns model predictions."""
63
  try:
 
64
  data = request.get_json(force=True)
 
 
 
65
  print("Received data:", data)
66
 
67
- # Convert JSON list of dicts -> DataFrame
68
  df = pd.DataFrame(data)
 
 
69
 
70
- # Run model inference
71
  preds = model.predict(df)
72
 
73
  return jsonify({
@@ -81,15 +90,13 @@ def predict():
81
 
82
 
83
  # -----------------------------------------------------------
84
- # Entry point
85
  # -----------------------------------------------------------
86
  if __name__ == "__main__":
87
  load_model()
88
  port = int(os.environ.get("PORT", 7860))
89
  print(f"🚀 Starting SuperKart backend on 0.0.0.0:{port}")
90
  app.run(host="0.0.0.0", port=port, debug=False)
91
- if __name__ == "__main__":
92
- load_model()
93
- port = int(os.environ.get("PORT", 7860))
94
- print(f"🚀 Starting SuperKart backend on 0.0.0.0:{port}")
95
- app.run(host="0.0.0.0", port=port, debug=False)
 
1
  # -----------------------------------------------------------
2
+ # 🛒 SuperKart Backend API Flask App for Hugging Face Spaces
3
  # -----------------------------------------------------------
4
 
5
  from flask import Flask, request, jsonify
 
9
  import os
10
 
11
  # -----------------------------------------------------------
12
+ # App initialization
13
  # -----------------------------------------------------------
14
  app = Flask(__name__)
15
  CORS(app)
16
 
17
+ MODEL_PATH = "model.joblib" # or your model file name
18
  model = None
19
 
 
20
  # -----------------------------------------------------------
21
  # Load model
22
  # -----------------------------------------------------------
 
31
 
32
 
33
  # -----------------------------------------------------------
34
+ # Root route (health / info)
35
  # -----------------------------------------------------------
36
  @app.route("/", methods=["GET"])
37
  def home():
 
44
 
45
 
46
  # -----------------------------------------------------------
47
+ # Debug route: show all available routes
48
  # -----------------------------------------------------------
49
  @app.route("/routes", methods=["GET"])
50
  def show_routes():
 
51
  routes = [str(rule) for rule in app.url_map.iter_rules()]
52
  return jsonify({"available_routes": routes})
53
 
54
 
55
  # -----------------------------------------------------------
56
+ # Health check route
57
+ # -----------------------------------------------------------
58
+ @app.route("/health", methods=["GET"])
59
+ def health():
60
+ return jsonify({"status": "healthy", "model_loaded": model is not None})
61
+
62
+
63
+ # -----------------------------------------------------------
64
+ # Prediction route
65
  # -----------------------------------------------------------
66
  @app.route("/predict", methods=["POST"])
67
  def predict():
 
68
  try:
69
+ # Expecting JSON like: [ { "feature1": ..., "feature2": ... } ]
70
  data = request.get_json(force=True)
71
+ if not data:
72
+ return jsonify({"status": "error", "message": "No JSON data received"}), 400
73
+
74
  print("Received data:", data)
75
 
 
76
  df = pd.DataFrame(data)
77
+ if model is None:
78
+ return jsonify({"status": "error", "message": "Model not loaded"}), 500
79
 
 
80
  preds = model.predict(df)
81
 
82
  return jsonify({
 
90
 
91
 
92
  # -----------------------------------------------------------
93
+ # Run app
94
  # -----------------------------------------------------------
95
  if __name__ == "__main__":
96
  load_model()
97
  port = int(os.environ.get("PORT", 7860))
98
  print(f"🚀 Starting SuperKart backend on 0.0.0.0:{port}")
99
  app.run(host="0.0.0.0", port=port, debug=False)
100
+
101
+
102
+