Spaces:
Running
Running
File size: 2,387 Bytes
e221c83 |
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 |
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager
import os
db = SQLAlchemy()
login_manager = LoginManager()
login_manager.login_view = 'auth.login'
def create_app():
app = Flask(__name__, static_folder='templates/static')
# 1. ์ค์
app.config['SECRET_KEY'] = 'a-very-long-and-unique-secret-key-for-this-app'
app.config['SESSION_COOKIE_SAMESITE'] = 'None'
app.config['SESSION_COOKIE_SECURE'] = True
db_uri = os.environ.get('DATABASE_URL')
if not db_uri:
db_uri = "sqlite:///emotion.db"
if db_uri and db_uri.startswith("postgres://"):
db_uri = db_uri.replace("postgres://", "postgresql://", 1)
app.config['SQLALCHEMY_DATABASE_URI'] = db_uri
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['TEMPLATES_AUTO_RELOAD'] = True
# SQLAlchemy ์์ง ์ต์
์ค์ (pgbouncer Session ๋ชจ๋ ํธํ)
app.config['SQLALCHEMY_ENGINE_OPTIONS'] = {
"pool_size": 15, # pgbouncer์ pool_size์ ์ผ์น์ํค๊ฑฐ๋ ๋ ์๊ฒ ์ค์
"max_overflow": 5, # pool_size ์ด๊ณผ ์ ์์๋ก ์ด ์ ์๋ ์ฐ๊ฒฐ ์
"pool_recycle": 3600, # 1์๊ฐ๋ง๋ค ์ฐ๊ฒฐ ์ฌํ์ฉ (์ค๋๋ ์ฐ๊ฒฐ ๋ฐฉ์ง)
"pool_pre_ping": True, # ์ฐ๊ฒฐ ์ฌ์ฉ ์ ์ ํจ์ฑ ๊ฒ์ฌ
"pool_timeout": 30, # ์ฐ๊ฒฐ ํ์์ ์ฐ๊ฒฐ์ ๊ธฐ๋ค๋ฆฌ๋ ์ต๋ ์๊ฐ (์ด)
# pgbouncer Session ๋ชจ๋์์๋ 'rollback'์ด ๊ธฐ๋ณธ๊ฐ์ด๋ฏ๋ก ๋ช
์์ ์ผ๋ก ์ค์ ํ์ง ์์๋ ๋จ
# "pool_reset_on_return": 'rollback'
}
# ๋ก๊น
์ค์
import logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
# 2. DB ์ด๊ธฐํ ๋ฐ ํ
์ด๋ธ ์์ฑ
db.init_app(app)
with app.app_context():
from . import models
db.create_all()
@app.teardown_appcontext
def shutdown_session(exception=None):
db.session.remove()
# 3. AI ๋ชจ๋ธ ๋ก๋ฉ
from .emotion_engine import load_emotion_classifier
# ์ฑ ์ปจํ
์คํธ ์์์ ๋ชจ๋ธ์ ๋ก๋ํ๊ณ app ๊ฐ์ฒด์ ์ ์ฅํฉ๋๋ค.
with app.app_context():
app.emotion_classifier = load_emotion_classifier()
# 5. ๋ธ๋ฃจํ๋ฆฐํธ ๋ฑ๋ก
from . import main, auth
app.register_blueprint(main.bp)
app.register_blueprint(auth.bp)
return app
|