Files
aitsc/config/production.py

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