70 lines
2.1 KiB
Python
70 lines
2.1 KiB
Python
|
|
import os
|
||
|
|
from .base import Config
|
||
|
|
|
||
|
|
class ProductionConfig(Config):
|
||
|
|
"""
|
||
|
|
生产环境配置
|
||
|
|
"""
|
||
|
|
DEBUG = False
|
||
|
|
TESTING = False
|
||
|
|
|
||
|
|
# 生产环境日志配置
|
||
|
|
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_ORIGINS = ['https://yourdomain.com']
|
||
|
|
|
||
|
|
# 生产环境性能配置
|
||
|
|
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)
|
||
|
|
|
||
|
|
app.logger.info('生产环境启动')
|