agent-writer/config/web_config.py
2025-09-11 18:34:03 +08:00

88 lines
3.5 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
}