humanda5
ํ˜ธ์ŠคํŠธ ์„ค์ • ๋ณ€๊ฒฝ
24da8ec
# portfolio/app.py
from flask import Flask, render_template, url_for, redirect
# from npc_social_network.routes.npc_route import npc_bp
# from npc_social_network import simulation_core
# from stock.routes.stock_route import stock_bp
import threading
import logging
import os
# -------------------------------------------------------------------
# ํŒŒ์ผ 1: portfolio/app.py (์ˆ˜์ •)
# ์—ญํ• : ์ „์ฒด ํฌํŠธํด๋ฆฌ์˜ค์˜ ์ง„์ž…์ .
# NPC ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์Šค๋ ˆ๋“œ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ , ๊ด€๋ จ URL ๊ทธ๋ฃน(Blueprint)์„ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
# -------------------------------------------------------------------
# ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ด ์—ฌ๋Ÿฌ ๋ฒˆ ์ดˆ๊ธฐํ™”๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ž ๊ธˆ ์žฅ์น˜
init_lock = threading.Lock()
simulation_initialized = False
# ํŠน์ • ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฑธ๋Ÿฌ๋‚ด๊ธฐ ์œ„ํ•œ ํ•„ํ„ฐ ํด๋ž˜์Šค
class LogFilter(logging.Filter):
def filter(self, record):
# /api/world_state ๊ฒฝ๋กœ์— ๋Œ€ํ•œ ๋กœ๊ทธ๋Š” ๊ธฐ๋กํ•˜์ง€ ์•Š์Œ
if "/api/world_state" in record.getMessage():
return False
if "/api/npc_details" in record.getMessage():
return False
if "/api/toggle_simulation" in record.getMessage():
return False
return True
def create_app():
"""Flask ์•ฑ์„ ์ƒ์„ฑํ•˜๊ณ , ํ•„์š”ํ•œ Blueprint๋ฅผ ๋“ฑ๋กํ•˜๋Š” ํŒฉํ† ๋ฆฌ ํ•จ์ˆ˜."""
app = Flask(__name__,
template_folder='templates') # static/template ๊ฒฝ๋กœ๋ฅผ ๊ธฐ๋ณธ๊ฐ’
try:
from npc_social_network.routes.npc_route import npc_bp
app.register_blueprint(npc_bp)
print("โœ… 'npc_social' Blueprint๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ๋“ฑ๋ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค.")
# app.register_blueprint(stock_bp)
except Exception as e:
import traceback
print("="*60)
print("โŒ CRITICAL ERROR: Blueprint ๋“ฑ๋ก ์ค‘ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค!")
print(f" ์—๋Ÿฌ ๋ฉ”์‹œ์ง€: {e}")
print("="*60)
traceback.print_exc() # ์—๋Ÿฌ์˜ ์ „์ฒด ๊ฒฝ๋กœ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
print("="*60)
return app
if __name__ == '__main__':
# 1. flask ์•ฑ ์‹คํ–‰
app = create_app()
# Flask ์•ฑ์ด ์‹คํ–‰๋˜๊ธฐ ์ „์— ๋กœ๊ทธ ํ•„ํ„ฐ๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
log = logging.getLogger('werkzeug')
log.addFilter(LogFilter())
# use_reloader=False๋Š” ๋””๋ฒ„๊ทธ ๋ชจ๋“œ์—์„œ ์•ฑ์ด ๋‘ ๋ฒˆ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜์—ฌ,
# ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋‘ ๋ฒˆ ์‹œ์ž‘๋˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
app.run(host='0.0.0.0', port=int(os.environ.get("PORT", 7860)))