Spaces:
Running
Running
Upload 5 files
Browse files- Dockerfile +2 -0
- database_sql.py +6 -2
Dockerfile
CHANGED
|
@@ -7,6 +7,8 @@ WORKDIR /code
|
|
| 7 |
# 安装系统依赖 (psycopg2 需要)
|
| 8 |
RUN apt-get update && apt-get install -y --no-install-recommends \
|
| 9 |
libpq-dev \
|
|
|
|
|
|
|
| 10 |
&& rm -rf /var/lib/apt/lists/*
|
| 11 |
|
| 12 |
# 先复制依赖文件,利用 Docker 缓存层
|
|
|
|
| 7 |
# 安装系统依赖 (psycopg2 需要)
|
| 8 |
RUN apt-get update && apt-get install -y --no-install-recommends \
|
| 9 |
libpq-dev \
|
| 10 |
+
ca-certificates \
|
| 11 |
+
libssl-dev \
|
| 12 |
&& rm -rf /var/lib/apt/lists/*
|
| 13 |
|
| 14 |
# 先复制依赖文件,利用 Docker 缓存层
|
database_sql.py
CHANGED
|
@@ -33,14 +33,18 @@ if "sqlite" in SQLALCHEMY_DATABASE_URL:
|
|
| 33 |
logger.info(f"数据库引擎初始化完成 (SQLite)")
|
| 34 |
else:
|
| 35 |
# PostgreSQL/MySQL:配置连接池参数
|
|
|
|
|
|
|
|
|
|
| 36 |
engine = create_engine(
|
| 37 |
SQLALCHEMY_DATABASE_URL,
|
| 38 |
poolclass=QueuePool,
|
| 39 |
pool_size=POOL_SIZE, # 核心连接数(支持环境变量配置)
|
| 40 |
max_overflow=POOL_OVERFLOW, # 超出 pool_size 后可创建的最大连接数(支持环境变量配置)
|
| 41 |
pool_timeout=30, # 获取连接超时(秒)
|
| 42 |
-
pool_recycle=
|
| 43 |
-
pool_pre_ping=True
|
|
|
|
| 44 |
)
|
| 45 |
logger.info(f"数据库引擎初始化完成 (PostgreSQL/MySQL) - 连接池配置: pool_size={POOL_SIZE}, max_overflow={POOL_OVERFLOW}")
|
| 46 |
|
|
|
|
| 33 |
logger.info(f"数据库引擎初始化完成 (SQLite)")
|
| 34 |
else:
|
| 35 |
# PostgreSQL/MySQL:配置连接池参数
|
| 36 |
+
connect_args = {}
|
| 37 |
+
if "postgresql" in SQLALCHEMY_DATABASE_URL or "postgres" in SQLALCHEMY_DATABASE_URL:
|
| 38 |
+
connect_args["sslmode"] = os.environ.get("DB_SSLMODE", "prefer")
|
| 39 |
engine = create_engine(
|
| 40 |
SQLALCHEMY_DATABASE_URL,
|
| 41 |
poolclass=QueuePool,
|
| 42 |
pool_size=POOL_SIZE, # 核心连接数(支持环境变量配置)
|
| 43 |
max_overflow=POOL_OVERFLOW, # 超出 pool_size 后可创建的最大连接数(支持环境变量配置)
|
| 44 |
pool_timeout=30, # 获取连接超时(秒)
|
| 45 |
+
pool_recycle=1800, # 连接回收时间(30分钟)
|
| 46 |
+
pool_pre_ping=True, # 使用前检测连接有效性
|
| 47 |
+
connect_args=connect_args
|
| 48 |
)
|
| 49 |
logger.info(f"数据库引擎初始化完成 (PostgreSQL/MySQL) - 连接池配置: pool_size={POOL_SIZE}, max_overflow={POOL_OVERFLOW}")
|
| 50 |
|