You've already forked FrameTour-RenderWorker
feat(cache): 添加素材缓存功能以避免重复下载
- 新增素材缓存配置选项包括启用状态、缓存目录和最大缓存大小 - 实现 MaterialCache 类提供缓存存储和检索功能 - 修改 download_file 方法支持缓存下载模式 - 添加缓存清理机制使用 LRU 策略管理磁盘空间 - 配置默认值优化本地开发体验 - 实现缓存统计和监控功能
This commit is contained in:
@@ -59,6 +59,11 @@ class WorkerConfig:
|
||||
# 硬件加速配置
|
||||
hw_accel: str = HW_ACCEL_NONE # 硬件加速类型: none, qsv, cuda
|
||||
|
||||
# 素材缓存配置
|
||||
cache_enabled: bool = True # 是否启用素材缓存
|
||||
cache_dir: str = "" # 缓存目录,默认为 temp_dir/cache
|
||||
cache_max_size_gb: float = 0 # 最大缓存大小(GB),0 表示不限制
|
||||
|
||||
@classmethod
|
||||
def from_env(cls) -> 'WorkerConfig':
|
||||
"""从环境变量创建配置"""
|
||||
@@ -108,6 +113,11 @@ class WorkerConfig:
|
||||
if hw_accel not in HW_ACCEL_TYPES:
|
||||
hw_accel = HW_ACCEL_NONE
|
||||
|
||||
# 素材缓存配置
|
||||
cache_enabled = os.getenv('CACHE_ENABLED', 'true').lower() in ('true', '1', 'yes')
|
||||
cache_dir = os.getenv('CACHE_DIR', '') # 空字符串表示使用默认路径
|
||||
cache_max_size_gb = float(os.getenv('CACHE_MAX_SIZE_GB', '0'))
|
||||
|
||||
return cls(
|
||||
api_endpoint=api_endpoint,
|
||||
access_key=access_key,
|
||||
@@ -121,7 +131,10 @@ class WorkerConfig:
|
||||
ffmpeg_timeout=ffmpeg_timeout,
|
||||
download_timeout=download_timeout,
|
||||
upload_timeout=upload_timeout,
|
||||
hw_accel=hw_accel
|
||||
hw_accel=hw_accel,
|
||||
cache_enabled=cache_enabled,
|
||||
cache_dir=cache_dir if cache_dir else os.path.join(temp_dir, 'cache'),
|
||||
cache_max_size_gb=cache_max_size_gb
|
||||
)
|
||||
|
||||
def get_work_dir_path(self, task_id: str) -> str:
|
||||
|
||||
Reference in New Issue
Block a user