Spaces:
Sleeping
Sleeping
# 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 | |
# ------------------------------------------------------------------- | |
# ํ์ผ 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 | |
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) | |
# ํฌํธํด๋ฆฌ์ค์ ๋ฉ์ธ ๋๋ฉ ํ์ด์ง | |
def index(): | |
return render_template("main.html") | |
return app | |
if __name__ == '__main__': | |
# 1. flask ์ฑ ์คํ | |
app = create_app() | |
# 2. NPC ์๋ฎฌ๋ ์ด์ ์ด๊ธฐํ ๋ฐ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋ ์์ | |
try: | |
from npc_social_network import simulation_core | |
simulation_core.initialize_simulation() | |
print("โ ์๋ฎฌ๋ ์ด์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์ด๊ธฐํ๋์์ต๋๋ค.") | |
except Exception as e: | |
import traceback | |
print("="*60) | |
print("โ CRITICAL ERROR: ์๋ฎฌ๋ ์ด์ ์ด๊ธฐํ ์ค ์๋ฌ๊ฐ ๋ฐ์ํ์ต๋๋ค!") | |
print(f" ์๋ฌ ๋ฉ์์ง: {e}") | |
print("="*60) | |
traceback.print_exc() | |
print("="*60) | |
# 3. Flask ์น ์๋ฒ ์คํ | |
log = logging.getLogger('werkzeug') | |
log.addFilter(LogFilter()) | |
# use_reloader=False๋ ๋๋ฒ๊ทธ ๋ชจ๋์์ ์ฑ์ด ๋ ๋ฒ ์คํ๋๋ ๊ฒ์ ๋ฐฉ์งํ์ฌ, | |
# ์๋ฎฌ๋ ์ด์ ์ค๋ ๋๊ฐ ๋ ๋ฒ ์์๋์ง ์๋๋ก ํฉ๋๋ค. | |
app.run(debug=True, use_reloader=False, port=5000) |