Jahadona commited on
Commit
d40654a
·
verified ·
1 Parent(s): 387f493

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -8
app.py CHANGED
@@ -3,11 +3,13 @@
3
  # - بارگذاری مدل Sentence Transformer پارسی 'heydariAI/persian-embeddings'
4
  # - تعریف اپلیکیشن Flask
5
  # - اندپوینت /get_embedding برای دریافت سوال و ارسال بردار آن
 
 
6
  # - لاگ گیری برای عیب یابی در لاگ های Space و یک فایل جداگانه
7
  # - مدیریت خطاهای اولیه در بارگذاری مدل و پردازش درخواست ها
8
 
9
  from sentence_transformers import SentenceTransformer
10
- from flask import Flask, request, jsonify
11
  import numpy as np
12
  import logging
13
  import os
@@ -17,7 +19,6 @@ import os
17
  logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
18
 
19
  # مسیر فایل لاگ جداگانه در فضای Hugging Face (برای عیب یابی بیشتر)
20
- # نکته: نوشتن در فایل در برخی محیط های Space ممکن است نیاز به تنظیمات مجوز داشته باشد.
21
  log_file_path = "app_log.txt"
22
 
23
  # تابع برای افزودن پیام به فایل لاگ
@@ -59,13 +60,31 @@ except Exception as e:
59
  # تعریف اپلیکیشن Flask
60
  app = Flask(__name__)
61
 
 
 
62
  @app.route('/')
63
- def index():
64
- if model is None:
65
- return "Sentiment Embedding Server is running, but model failed to load. Check Space logs for details.", 500
66
- return f"Sentiment Embedding Server is running successfully with model: {model_name_to_load}"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
 
68
 
 
69
  @app.route('/get_embedding', methods=['POST'])
70
  def get_embedding():
71
  if model is None:
@@ -98,7 +117,6 @@ def get_embedding():
98
  log_message(error_message)
99
  return jsonify({"error": error_message}), 500
100
 
101
- # خط زیر فقط در صورتی که فایل server.py مستقیماً اجرا شود، سرور Flask را اجرا می کند.
102
- # در Hugging Face Space، خود زیرساخت Space مسئول اجرای برنامه شماست و این بخش معمولاً غیرفعال است.
103
  # if __name__ == '__main__':
104
  # app.run(host='0.0.0.0', port=7860, debug=False)
 
3
  # - بارگذاری مدل Sentence Transformer پارسی 'heydariAI/persian-embeddings'
4
  # - تعریف اپلیکیشن Flask
5
  # - اندپوینت /get_embedding برای دریافت سوال و ارسال بردار آن
6
+ # - **سرویس دهی فایل index.html به عنوان صفحه اصلی**
7
+ # - **سرویس دهی سایر فایل های ایستا (js, css, json)**
8
  # - لاگ گیری برای عیب یابی در لاگ های Space و یک فایل جداگانه
9
  # - مدیریت خطاهای اولیه در بارگذاری مدل و پردازش درخواست ها
10
 
11
  from sentence_transformers import SentenceTransformer
12
+ from flask import Flask, request, jsonify, send_from_directory # <--- اضافه کردن send_from_directory
13
  import numpy as np
14
  import logging
15
  import os
 
19
  logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
20
 
21
  # مسیر فایل لاگ جداگانه در فضای Hugging Face (برای عیب یابی بیشتر)
 
22
  log_file_path = "app_log.txt"
23
 
24
  # تابع برای افزودن پیام به فایل لاگ
 
60
  # تعریف اپلیکیشن Flask
61
  app = Flask(__name__)
62
 
63
+ # ****** اضافه کردن روت برای سرویس دهی فایل index.html به عنوان صفحه اصلی ******
64
+ # این روت وقتی کاربر به آدرس اصلی Space مراجعه می کند (/) اجرا می شود
65
  @app.route('/')
66
+ def serve_index():
67
+ # فرض می کنیم index.html در ریشه دایرکتوری کاری اپلیکیشن (app/) قرار دارد
68
+ # send_from_directory فایل را از دایرکتوری مشخص شده ('.') ارسال می کند
69
+ return send_from_directory('.', 'index.html')
70
+
71
+ # ****** اضافه کردن روت برای سرویس دهی سایر فایل های ایستا ******
72
+ # این روت برای سرویس دهی فایل هایی مانند style.css, script.js, و فایل های JSON استفاده می شود.
73
+ # این روت هر فایلی که در ریشه اپلیکیشن قرار دارد و نام آن با روت های تعریف شده مطابقت ندارد را سرویس می دهد.
74
+ # <path:filename> یک متغیر مسیر است که شامل نام فایل و هر زیرپوشه ای است.
75
+ @app.route('/<path:filename>')
76
+ def serve_static(filename):
77
+ # اطمینان حاصل کنید که فایل در دایرکتوری کاری اپلیکیشن وجود دارد
78
+ # از send_from_directory برای جلوگیری از مشکلات امنیتی استفاده کنید.
79
+ logging.info(f"Attempting to serve static file: {filename}")
80
+ try:
81
+ return send_from_directory('.', filename)
82
+ except FileNotFoundError:
83
+ logging.error(f"Static file not found: {filename}")
84
+ return "File not found", 404 # برگرداندن خطای 404 اگر فایل پیدا نشد
85
 
86
 
87
+ # ****** اندپوینت اصلی برای دریافت بردار (embedding) سوال (همانند قبل) ******
88
  @app.route('/get_embedding', methods=['POST'])
89
  def get_embedding():
90
  if model is None:
 
117
  log_message(error_message)
118
  return jsonify({"error": error_message}), 500
119
 
120
+ # این بخش معمولاً در محیط Hugging Face Space توسط Gunicorn مدیریت می شود.
 
121
  # if __name__ == '__main__':
122
  # app.run(host='0.0.0.0', port=7860, debug=False)