88 lines
3.5 KiB
Python
88 lines
3.5 KiB
Python
# config/web_config.py
|
||
"""
|
||
Web服务配置文件
|
||
包含端口号、会话配置等相关设置
|
||
"""
|
||
|
||
import os
|
||
|
||
# Flask应用配置
|
||
class WebConfig:
|
||
# 服务端口
|
||
PORT = int(os.environ.get('WEB_PORT', 3400))
|
||
|
||
# 服务主机
|
||
HOST = os.environ.get('WEB_HOST', '0.0.0.0')
|
||
|
||
# 调试模式
|
||
DEBUG = os.environ.get('WEB_DEBUG', 'False').lower() == 'true'
|
||
|
||
# 密钥用于会话和CSRF保护
|
||
SECRET_KEY = os.environ.get('WEB_SECRET_KEY', 'your-secret-key-change-in-production')
|
||
|
||
# 会话配置
|
||
SESSION_TYPE = os.environ.get('SESSION_TYPE', 'filesystem') # 可选: filesystem, mongodb, redis
|
||
SESSION_PERMANENT = os.environ.get('SESSION_PERMANENT', 'False').lower() == 'true'
|
||
SESSION_USE_SIGNER = os.environ.get('SESSION_USE_SIGNER', 'True').lower() == 'true'
|
||
SESSION_KEY_PREFIX = os.environ.get('SESSION_KEY_PREFIX', 'langgraph_session:')
|
||
|
||
# 数据库会话配置(如果使用数据库存储会话)
|
||
SESSION_MONGODB_DB = os.environ.get('SESSION_MONGODB_DB', 'langgraph_sessions')
|
||
SESSION_MONGODB_COLLECT = os.environ.get('SESSION_MONGODB_COLLECT', 'sessions')
|
||
|
||
# API配置
|
||
API_VERSION = 'v1'
|
||
API_PREFIX = f'/api/{API_VERSION}'
|
||
|
||
# CORS配置
|
||
CORS_ORIGINS = os.environ.get('CORS_ORIGINS', '*').split(',')
|
||
CORS_METHODS = os.environ.get('CORS_METHODS', 'GET,POST,PUT,DELETE,OPTIONS').split(',')
|
||
CORS_HEADERS = os.environ.get('CORS_HEADERS', 'Content-Type,Authorization').split(',')
|
||
|
||
# 请求体大小限制
|
||
MAX_CONTENT_LENGTH = int(os.environ.get('MAX_CONTENT_LENGTH', 16 * 1024 * 1024)) # 默认16MB
|
||
|
||
# 上传文件配置
|
||
UPLOAD_FOLDER = os.environ.get('UPLOAD_FOLDER', 'uploads')
|
||
MAX_UPLOAD_SIZE = int(os.environ.get('MAX_UPLOAD_SIZE', 50 * 1024 * 1024)) # 默认50MB
|
||
|
||
# 日志配置
|
||
LOG_LEVEL = os.environ.get('LOG_LEVEL', 'INFO')
|
||
LOG_FORMAT = os.environ.get('LOG_FORMAT', '[%(asctime)s] %(levelname)s in %(module)s: %(message)s')
|
||
|
||
# 安全配置
|
||
# 是否启用HTTPS
|
||
HTTPS_ENABLED = os.environ.get('HTTPS_ENABLED', 'False').lower() == 'true'
|
||
|
||
# JWT配置(如果使用JWT认证)
|
||
JWT_SECRET_KEY = os.environ.get('JWT_SECRET_KEY', 'jwt-secret-string')
|
||
JWT_ACCESS_TOKEN_EXPIRES = int(os.environ.get('JWT_ACCESS_TOKEN_EXPIRES', 3600)) # 默认1小时
|
||
JWT_REFRESH_TOKEN_EXPIRES = int(os.environ.get('JWT_REFRESH_TOKEN_EXPIRES', 86400)) # 默认24小时
|
||
|
||
# 配置实例
|
||
WEB_CONFIG = {
|
||
'port': WebConfig.PORT,
|
||
'host': WebConfig.HOST,
|
||
'debug': WebConfig.DEBUG,
|
||
'secret_key': WebConfig.SECRET_KEY,
|
||
'session_type': WebConfig.SESSION_TYPE,
|
||
'session_permanent': WebConfig.SESSION_PERMANENT,
|
||
'session_use_signer': WebConfig.SESSION_USE_SIGNER,
|
||
'session_key_prefix': WebConfig.SESSION_KEY_PREFIX,
|
||
'session_mongodb_db': WebConfig.SESSION_MONGODB_DB,
|
||
'session_mongodb_collect': WebConfig.SESSION_MONGODB_COLLECT,
|
||
'api_version': WebConfig.API_VERSION,
|
||
'api_prefix': WebConfig.API_PREFIX,
|
||
'cors_origins': WebConfig.CORS_ORIGINS,
|
||
'cors_methods': WebConfig.CORS_METHODS,
|
||
'cors_headers': WebConfig.CORS_HEADERS,
|
||
'max_content_length': WebConfig.MAX_CONTENT_LENGTH,
|
||
'upload_folder': WebConfig.UPLOAD_FOLDER,
|
||
'max_upload_size': WebConfig.MAX_UPLOAD_SIZE,
|
||
'log_level': WebConfig.LOG_LEVEL,
|
||
'log_format': WebConfig.LOG_FORMAT,
|
||
'https_enabled': WebConfig.HTTPS_ENABLED,
|
||
'jwt_secret_key': WebConfig.JWT_SECRET_KEY,
|
||
'jwt_access_token_expires': WebConfig.JWT_ACCESS_TOKEN_EXPIRES,
|
||
'jwt_refresh_token_expires': WebConfig.JWT_REFRESH_TOKEN_EXPIRES
|
||
} |