Spaces:
Sleeping
Sleeping
File size: 2,819 Bytes
69f0bf5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
"""
RAG ๊ฒ์ ์ฑ๋ด ๋ฉ์ธ ์คํ ํ์ผ
"""
# os ๋ชจ๋ ์ํฌํธ
import os
import logging
# ๋ก๊น
์ค์
logging.basicConfig(
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO
)
logger = logging.getLogger(__name__)
try:
# ์ฑ ๋ชจ๋์์ Flask ์ฑ ๊ฐ์ ธ์ค๊ธฐ
from app.app import app
# ์ฅ์น ๋ผ์ฐํธ ๋ฑ๋ก ์ฝ๋ ์ถ๊ฐ
try:
from flask_cors import CORS
from app.app_device_routes import register_device_routes
# CORS ์ค์
CORS(app, supports_credentials=True)
# ์ฅ์น ์๋ฒ URL ํ๊ฒฝ ๋ณ์ (๋๋ฌธ์๋ก ๋ณ๊ฒฝ)
DEVICE_SERVER_URL = os.getenv('DEVICE_SERVER_URL', 'http://localhost:5050')
logger.info(f"์ฅ์น ์๋ฒ URL: {DEVICE_SERVER_URL}")
# ์ธ์ฆ ๋ฐ์ฝ๋ ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
from app.app import login_required
# ์ธ์ฆ ๋ฐ์ฝ๋ ์ดํฐ ์ค๋ฒ๋ผ์ด๋ (์ฅ์น API ์ธ์ฆ ์ฐํ)
from functools import wraps
from flask import request, session, redirect, url_for
def device_login_required(f):
@wraps(f)
def decorated_function(*args, **kwargs):
# API ์์ฒญ์ด๊ณ ํด๋ผ์ด์ธํธ์์ ์ค๋ ๊ฒฝ์ฐ ์ธ์ฆ ๋ฌด์ (์์ ์กฐ์น)
if request.path.startswith('/api/device/'):
logger.info(f"์ฅ์น API ์์ฒญ: {request.path} - ์ธ์ฆ ์ ์ธ")
return f(*args, **kwargs)
# ๊ทธ ์ธ์๋ ๊ธฐ์กด login_required ์ฌ์ฉ
return login_required(f)(*args, **kwargs)
return decorated_function
# ์ฅ์น ๋ผ์ฐํธ ๋ฑ๋ก (๋๋ฌธ์ ๋ณ์๋ช
์ฌ์ฉ)
register_device_routes(app, device_login_required, DEVICE_SERVER_URL)
logger.info("์ฅ์น ๋ผ์ฐํธ ์ง์ ๋ฑ๋ก ์ฑ๊ณต")
# 404 ์ค๋ฅ ํธ๋ค๋ฌ ๋ฑ๋ก
@app.errorhandler(404)
def not_found(e):
# ํด๋ผ์ด์ธํธ๊ฐ JSON์ ๊ธฐ๋ํ๋ API ํธ์ถ์ธ ๊ฒฝ์ฐ JSON ์๋ต
from flask import request, jsonify
if request.path.startswith('/api/'):
return jsonify({"success": False, "error": "์์ฒญํ API ์๋ํฌ์ธํธ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค."}), 404
# ์ผ๋ฐ ์น ํ์ด์ง ์์ฒญ์ธ ๊ฒฝ์ฐ HTML ์๋ต
return "ํ์ด์ง๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.", 404
except Exception as e:
logger.error(f"์ฅ์น ๋ผ์ฐํธ ๋ฑ๋ก ์คํจ: {e}", exc_info=True)
except ImportError as e:
logger.error(f"์ฑ ๋ชจ๋ ๊ฐ์ ธ์ค๊ธฐ ์คํจ: {e}")
raise
if __name__ == '__main__':
port = int(os.environ.get("PORT", 7860))
logger.info(f"์๋ฒ๋ฅผ http://0.0.0.0:{port} ์์ ์์ํฉ๋๋ค.")
app.run(debug=False, host='0.0.0.0', port=port) |