- 在 src/flask_prompt_master/__init__.py 添加 __version__ 和 __version_info__ - 创建 VERSION 文件存储版本号 - 更新所有环境配置(development/production/testing/local/base)在启动时显示版本信息 - 更新 README.md 文档添加版本号显示 版本号: v1.0.0 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
97 lines
3.1 KiB
Python
97 lines
3.1 KiB
Python
import os
|
||
from .base import Config
|
||
|
||
class ProductionConfig(Config):
|
||
"""
|
||
生产环境配置
|
||
"""
|
||
DEBUG = False
|
||
TESTING = False
|
||
|
||
def __init__(self):
|
||
super().__init__()
|
||
|
||
# 生产环境必须设置的关键配置检查
|
||
required_configs = [
|
||
('SECRET_KEY', self.SECRET_KEY),
|
||
('LLM_API_KEY', self.LLM_API_KEY),
|
||
('WX_APPID', self.WX_APPID),
|
||
('WX_SECRET', self.WX_SECRET),
|
||
('SQLALCHEMY_DATABASE_URI', self.SQLALCHEMY_DATABASE_URI)
|
||
]
|
||
|
||
for name, value in required_configs:
|
||
if not value:
|
||
raise ValueError(f"生产环境必须设置{name}环境变量")
|
||
|
||
# 生产环境CORS配置检查(在父类中已经设置)
|
||
if not self.CORS_ORIGINS or self.CORS_ORIGINS == ['']:
|
||
raise ValueError("生产环境必须设置CORS_ORIGINS环境变量,指定允许的域名")
|
||
|
||
# 生产环境日志配置
|
||
LOG_LEVEL = 'WARNING'
|
||
LOG_FILE = 'logs/production.log'
|
||
|
||
# 生产环境缓存配置
|
||
CACHE_TYPE = 'redis'
|
||
CACHE_REDIS_URL = os.environ.get('REDIS_URL')
|
||
CACHE_DEFAULT_TIMEOUT = 3600 # 1小时
|
||
|
||
# 生产环境安全配置
|
||
WTF_CSRF_ENABLED = True
|
||
WTF_CSRF_TIME_LIMIT = 3600
|
||
|
||
# 生产环境会话配置
|
||
SESSION_LIFETIME_HOURS = 168 # 7天
|
||
|
||
# 生产环境文件上传配置
|
||
MAX_CONTENT_LENGTH = 8 * 1024 * 1024 # 8MB
|
||
UPLOAD_FOLDER = 'uploads/production'
|
||
|
||
# 生产环境跨域配置(需要设置具体的域名)
|
||
CORS_ORIGINS = os.environ.get('CORS_ORIGINS', '').split(',')
|
||
if not CORS_ORIGINS or CORS_ORIGINS == ['']:
|
||
# 生产环境必须设置CORS域名
|
||
raise ValueError("生产环境必须设置CORS_ORIGINS环境变量,指定允许的域名")
|
||
|
||
# 生产环境性能配置
|
||
SQLALCHEMY_ENGINE_OPTIONS = {
|
||
'pool_pre_ping': True,
|
||
'pool_recycle': 300,
|
||
'pool_size': 20,
|
||
'max_overflow': 30,
|
||
}
|
||
|
||
@staticmethod
|
||
def init_app(app):
|
||
Config.init_app(app)
|
||
|
||
# 生产环境特定初始化
|
||
import logging
|
||
app.logger.setLevel(logging.WARNING)
|
||
|
||
# 生产环境错误处理
|
||
if not app.debug and not app.testing:
|
||
import logging
|
||
from logging.handlers import SMTPHandler
|
||
|
||
# 邮件错误报告(如果配置了邮件服务器)
|
||
mail_handler = SMTPHandler(
|
||
mailhost=(os.environ.get('MAIL_SERVER', 'localhost'),
|
||
int(os.environ.get('MAIL_PORT', 25))),
|
||
fromaddr=os.environ.get('MAIL_FROM', 'noreply@example.com'),
|
||
toaddrs=os.environ.get('ADMIN_EMAIL', '').split(','),
|
||
subject='应用错误报告'
|
||
)
|
||
mail_handler.setLevel(logging.ERROR)
|
||
app.logger.addHandler(mail_handler)
|
||
|
||
# 获取版本信息
|
||
try:
|
||
from src.flask_prompt_master import __version__
|
||
version_info = f"版本: {__version__}"
|
||
except ImportError:
|
||
version_info = "版本: 未知"
|
||
|
||
app.logger.info(f'生产环境启动 - {version_info}')
|