39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
import mysql.connector.pooling
|
|
import logging
|
|
|
|
logger = logging.getLogger("db_pool")
|
|
|
|
DB_CONFIG = {
|
|
"host": "localhost",
|
|
"port": 3306,
|
|
"user": "ctnt_root",
|
|
"password": "Umsang6595!!",
|
|
"database": "carbon_cutting_mc_db",
|
|
"autocommit": True,
|
|
}
|
|
|
|
try:
|
|
dbpool = mysql.connector.pooling.MySQLConnectionPool(
|
|
pool_name="carbon_cutting_pool",
|
|
pool_size=5,
|
|
pool_reset_session=True,
|
|
**DB_CONFIG
|
|
)
|
|
logger.info("[DB POOL] Connection pool initialized (pool_size=5)")
|
|
except Exception as e:
|
|
logger.error(f"[DB POOL ERROR] Failed to initialize pool: {e}", exc_info=True)
|
|
dbpool = None
|
|
|
|
def get_pooled_connection():
|
|
"""풀에서 연결 획득"""
|
|
if dbpool is None:
|
|
raise RuntimeError("[DB POOL ERROR] Pool not initialized")
|
|
conn = dbpool.get_connection()
|
|
try:
|
|
# DB 세션이 만료되거나 끊어진 경우 자동 재연결 시도
|
|
conn.ping(reconnect=True, attempts=3, delay=1)
|
|
except Exception as e:
|
|
logger.warning(f"[DB POOL] Ping/Reconnect failed: {e}")
|
|
return conn
|
|
|