boston_backend / app.py
omm7's picture
Update app.py
3d1adcb verified
from flask import Flask, request, jsonify
from flask_cors import CORS
import joblib
import pandas as pd
import os
app = Flask(__name__)
CORS(app) # Enable CORS for all routes
model = None
preprocessor = None
@app.route('/health', methods=['GET'])
def health():
return jsonify({"status": "ok", "message": "Backend is running"}), 200
def load_model():
global model, preprocessor
if model is None or preprocessor is None:
print("๐Ÿ“ฆ Loading model and preprocessor...")
model = joblib.load('boston_housing_model.pkl')
preprocessor = joblib.load('preprocessor.pkl')
print("โœ… Model and preprocessor loaded successfully.")
@app.route('/predict', methods=['POST'])
def predict():
try:
load_model() # Load model only when needed
data = request.json
if not data:
return jsonify({'error': 'No input data provided'}), 400
df = pd.DataFrame(data, index=[0])
processed_data = preprocessor.transform(df)
prediction = model.predict(processed_data)
print(f"๐Ÿ“จ Received payload: {data}")
print(f"๐Ÿ”ฎ Prediction: {prediction[0]}")
return jsonify({'prediction': float(prediction[0])})
except Exception as e:
return jsonify({'error': str(e)}), 500
if __name__ == '__main__':
port = int(os.environ.get("PORT", 5000))
print(f"๐Ÿš€ Starting backend server on port {port}")
app.run(host='0.0.0.0', port=port)