File size: 2,494 Bytes
9625f38
96692cf
6fe0d0c
 
a3830f2
6fe0d0c
b5ff045
24da8ec
7cfe55a
6fe0d0c
 
 
 
 
 
 
 
 
a88e1d8
b5ff045
 
 
 
 
 
b03bfdc
 
e01cc89
 
b5ff045
 
7cfe55a
6fe0d0c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7cfe55a
9625f38
 
 
dde6bd9
3eb99bc
b03bfdc
 
b5ff045
 
b03bfdc
dde6bd9
 
24da8ec
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
# 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)))