- 修复 AI 讨论框 Markdown 粗体渲染问题 - 增加数据库连接池到 50 最大并发连接 - 移除 Google Fonts 依赖,使用系统默认字体 - 添加 Docker DNS 配置支持多服务器访问 - 优化 Dockerfile 构建流程,直接复制 node_modules - 添加 mTLS 证书文件
38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
"""
|
||
数据库连接配置 (新架构)
|
||
使用 AsyncSession 支持异步操作
|
||
"""
|
||
import os
|
||
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker
|
||
from sqlalchemy.orm import declarative_base
|
||
from dotenv import load_dotenv
|
||
|
||
load_dotenv()
|
||
|
||
# 数据库连接 URL
|
||
DATABASE_URL = f"postgresql+asyncpg://{os.getenv('DB_USER')}:{os.getenv('DB_PASSWORD')}@{os.getenv('DB_HOST')}:{os.getenv('DB_PORT')}/{os.getenv('DB_NAME')}"
|
||
|
||
# 创建异步引擎
|
||
engine = create_async_engine(
|
||
DATABASE_URL,
|
||
echo=False, # 设置为 True 可以看到 SQL 日志
|
||
future=True,
|
||
pool_size=20, # 核心连接池大小
|
||
max_overflow=30, # 溢出连接池大小
|
||
pool_timeout=30, # 获取连接的超时时间(秒)
|
||
pool_recycle=3600 # 连接回收时间(1小时),防止长时间闲置连接被数据库关闭
|
||
)
|
||
|
||
# 创建异步 Session 工厂
|
||
SessionLocal = async_sessionmaker(
|
||
engine,
|
||
class_=AsyncSession,
|
||
expire_on_commit=False
|
||
)
|
||
|
||
# Dependency
|
||
async def get_db():
|
||
"""获取数据库会话"""
|
||
async with SessionLocal() as session:
|
||
yield session
|