اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

like this ERROR:app:Exception on / [GET]
Traceback (most recent call last):
  File "C:\Users\youce\PyCharmMiscProject\venv\Lib\site-packages\flask\app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\youce\PyCharmMiscProject\venv\Lib\site-packages\flask\app.py", line 920, in full_dispatch_request
    return self.finalize_request(rv)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\youce\PyCharmMiscProject\venv\Lib\site-packages\flask\app.py", line 939, in finalize_request
    response = self.make_response(rv)
               ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\youce\PyCharmMiscProject\venv\Lib\site-packages\flask\app.py", line 1249, in make_response
    raise TypeError(
TypeError: The view function did not return a valid response. The return type must be a string, dict, list, tuple with headers or status, Response instance, or WSGI callable, but it was a Predict.

  • 0
نشر
بتاريخ 3 دقائق مضت قال Youcef Kias:

like this ERROR:app:Exception on / [GET]
Traceback (most recent call last):
  File "C:\Users\youce\PyCharmMiscProject\venv\Lib\site-packages\flask\app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\youce\PyCharmMiscProject\venv\Lib\site-packages\flask\app.py", line 920, in full_dispatch_request
    return self.finalize_request(rv)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\youce\PyCharmMiscProject\venv\Lib\site-packages\flask\app.py", line 939, in finalize_request
    response = self.make_response(rv)
               ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\youce\PyCharmMiscProject\venv\Lib\site-packages\flask\app.py", line 1249, in make_response
    raise TypeError(
TypeError: The view function did not return a valid response. The return type must be a string, dict, list, tuple with headers or status, Response instance, or WSGI callable, but it was a Predict.

إذا الخطأ يخبرك أنه لم يتم إعادة respone صالح وصحيح حيث يجب على الرد أن يكون إما سلسلة نصية أو قاموس أو قائمة ولكنك قمت بإعادة كائن Predict . 

يرجى إرفاق ملف المشروع للإطلاع عليه ومساعدتك.

  • 0
نشر
بتاريخ 29 دقائق مضت قال Youcef Kias:

لاحظ المشكلة أنك قمت بوضع سطر 25 :

@app.route('/')

قبل الصنف Predict مباشرة وهذا خاطئ .

وحيث أنك إستخدمت api.add_resource لتسجيل الأصناف.

إذا المسارات التي يجب أن تذهب إليها هي /predict أو /health وليس المسار / .

ولكن الصحيح هو إما حذف @app.route('/') أو إضافة مسار أساسي هكذا مثلا :

from flask import Flask, jsonify
from flask_restful import Api, Resource, reqparse
import numpy as np
import pandas as pd
import joblib
import tensorflow as tf

app = Flask(__name__)
api = Api(app)  # تهيئة Flask-RESTful

# تحميل النماذج والمحولات
dl_model = tf.keras.models.load_model('models/dl_model.h5')
rf = joblib.load('models/rf_model.joblib')
scaler = joblib.load('models/scaler.joblib')

# مستخرج السمات من النموذج العميق
feature_layer = dl_model.get_layer(index=-2).output
extractor = tf.keras.Model(inputs=dl_model.input, outputs=feature_layer)

# تحضير محلل البيانات المطلوبة
parser = reqparse.RequestParser()
for feat in ['age', 'sex', 'cp', 'trestbps', 'chol', 'fbs', 'restecg', 'thalch', 'exang', 'oldpeak', 'slope', 'ca', 'thal']:
    parser.add_argument(feat, type=float, required=True, help=f"{feat} مطلوب")

@app.route('/')
def home():
    return "Home use /predict or /health"

class Predict(Resource):
    def get(self):
        args = parser.parse_args()
        df = pd.DataFrame([args])
        X_scaled = scaler.transform(df.values)
        X_dl = extractor.predict(X_scaled)
        X_comb = np.hstack([X_scaled, X_dl])
        y_pred = int(rf.predict(X_comb)[0])
        y_proba = rf.predict_proba(X_comb)[0].tolist()

        # توليد التوصيات العلاجية
        recommendations = []
        if y_pred >= 2:
            recommendations = [
                "مراجعة طبيب قلب مختص",
                "إجراء رسم قلب وتخطيط مجدد",
                "متابعة مستمرة للضغط والكوليسترول"
            ]
        else:
            recommendations = [
                "اتباع نظام غذائي قليل الدسم",
                "ممارسة الرياضة بانتظام",
                "متابعة سنوية فقط"
            ]

        return jsonify({
            'prediction': y_pred,
            'probabilities': y_proba,
            'recommendations': recommendations
        })

class Health(Resource):
    def get(self):
        return {'status': 'healthy'}, 200

api.add_resource(Predict, '/predict')  # GET /predict
api.add_resource(Health, '/health')    # GET /health

if __name__ == '__main__':
    app.run(debug=True)

ويمكنك الذهاب إلى المسارات التالية الصحيحة :

http://localhost:5000/predict

http://localhost:5000/health	

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...