85 lines
2.8 KiB
Python
85 lines
2.8 KiB
Python
import os
|
||
from datetime import timedelta
|
||
from dotenv import load_dotenv
|
||
|
||
# 获取环境变量 APP_ENV,默认为 'dev'
|
||
APP_ENV = os.getenv('APP_ENV', 'dev').lower()
|
||
|
||
# 根据环境变量加载对应的.env文件
|
||
env_file_map = {
|
||
'dev': '.env.dev',
|
||
'development': '.env.dev',
|
||
'prod': '.env.pro',
|
||
'production': '.env.pro',
|
||
'test': '.env.test',
|
||
'testing': '.env.test',
|
||
'dev-server': '.env.dev-server'
|
||
}
|
||
|
||
env_file = env_file_map.get(APP_ENV, '.env.dev')
|
||
if os.path.exists(env_file):
|
||
load_dotenv(env_file)
|
||
print(f"Successfully loaded configuration from {env_file} for environment: {APP_ENV}")
|
||
else:
|
||
print(f"Warning: Environment file {env_file} not found, using system environment variables")
|
||
|
||
class Config:
|
||
"""基础配置类"""
|
||
|
||
# Flask配置
|
||
SECRET_KEY = os.environ.get('SECRET_KEY') or 'dev-secret-key-change-in-production'
|
||
|
||
# API配置
|
||
API_VERSION = 'v1'
|
||
API_PREFIX = '/api'
|
||
|
||
# 火山引擎API配置
|
||
ARK_API_KEY = os.environ.get('ARK_API_KEY', '')
|
||
|
||
# 视频生成配置
|
||
VIDEO_MODEL = os.environ.get('VIDEO_MODEL', 'doubao-seedance-1-0-lite-i2v-250428') # doubao-seedance-1.0-lite 图生视频模型
|
||
VIDEO_MAX_DURATION = int(os.environ.get('VIDEO_MAX_DURATION', '10')) # 最大时长(秒)
|
||
VIDEO_DEFAULT_DURATION = int(os.environ.get('VIDEO_DEFAULT_DURATION', '5')) # 默认时长(秒)
|
||
VIDEO_DEFAULT_ASPECT_RATIO = os.environ.get('VIDEO_DEFAULT_ASPECT_RATIO', '16:9') # 默认宽高比
|
||
VIDEO_DEFAULT_RESOLUTION = os.environ.get('VIDEO_DEFAULT_RESOLUTION', '1280x720') # 默认分辨率
|
||
DEFAULT_VIDEO_DURATION = 10 # 默认视频时长(秒)
|
||
MAX_VIDEO_DURATION = 60 # 最大视频时长(秒)
|
||
DEFAULT_RESOLUTION = '1080p'
|
||
SUPPORTED_RESOLUTIONS = ['720p', '1080p', '4k']
|
||
DEFAULT_STYLE = 'realistic'
|
||
SUPPORTED_STYLES = ['realistic', 'cartoon', 'anime', 'abstract']
|
||
|
||
# 任务配置
|
||
TASK_TIMEOUT = timedelta(minutes=10) # 任务超时时间
|
||
MAX_CONCURRENT_TASKS = 10 # 最大并发任务数
|
||
|
||
# 文件存储配置
|
||
UPLOAD_FOLDER = os.environ.get('UPLOAD_FOLDER') or 'uploads'
|
||
MAX_CONTENT_LENGTH = 16 * 1024 * 1024 # 16MB
|
||
|
||
# 日志配置
|
||
LOG_LEVEL = os.environ.get('LOG_LEVEL') or 'INFO'
|
||
LOG_FILE = os.environ.get('LOG_FILE') or 'app.log'
|
||
|
||
class DevelopmentConfig(Config):
|
||
"""开发环境配置"""
|
||
DEBUG = True
|
||
LOG_LEVEL = 'DEBUG'
|
||
|
||
class ProductionConfig(Config):
|
||
"""生产环境配置"""
|
||
DEBUG = False
|
||
LOG_LEVEL = 'WARNING'
|
||
|
||
class TestingConfig(Config):
|
||
"""测试环境配置"""
|
||
TESTING = True
|
||
DEBUG = True
|
||
|
||
# 配置字典
|
||
config = {
|
||
'development': DevelopmentConfig,
|
||
'production': ProductionConfig,
|
||
'testing': TestingConfig,
|
||
'default': DevelopmentConfig
|
||
} |