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('生产环境启动')