37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
"""
|
|
应用配置模块
|
|
- 集中管理所有配置项,支持多环境切换
|
|
- 通过 python-dotenv 自动加载 .env 文件中的环境变量
|
|
- 敏感信息全部从环境变量读取,绝不硬编码
|
|
"""
|
|
import os
|
|
from dotenv import load_dotenv
|
|
|
|
# 自动加载项目根目录下的 .env 文件
|
|
load_dotenv()
|
|
|
|
|
|
class Config:
|
|
"""基础配置类(开发/生产通用)"""
|
|
|
|
# Flask 会话加密密钥,用于 cookie 签名和 CSRF 保护
|
|
SECRET_KEY = os.environ.get('SECRET_KEY', 'dev-secret-key-change-in-prod')
|
|
|
|
# 数据库连接字符串,优先读取环境变量,回退到本地 SQLite
|
|
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL', 'sqlite:///app.db')
|
|
|
|
# 关闭 SQLAlchemy 事件追踪,避免不必要的内存开销和警告
|
|
SQLALCHEMY_TRACK_MODIFICATIONS = False
|
|
|
|
# 是否打印 SQL 语句(开发调试时可设为 True,生产环境务必关闭)
|
|
SQLALCHEMY_ECHO = False
|
|
|
|
# 数据库引擎高级选项(主要针对 MySQL/PostgreSQL 连接池)
|
|
SQLALCHEMY_ENGINE_OPTIONS = {
|
|
# 连接池常驻连接数
|
|
'pool_size': int(os.environ.get('DB_POOL_SIZE', 10)),
|
|
# 连接最大存活时间(秒),防止数据库端主动断开空闲连接
|
|
'pool_recycle': 3600,
|
|
# 每次从池中取出连接前先 ping 一下,避免拿到已断开的死连接
|
|
'pool_pre_ping': True,
|
|
} |