Files
flask_example/app/config.py
T
2026-09-23 13:56:49 +08:00

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,
}