feat: 调度器+并发管线+GPU优化+日志分级+前端修复
- scheduler: ffmpeg 异步线程 + GPU 串行调度 + 模型复用(2N→2 次加载) - pipeline: 阶段拆分(extract/asr/translate),中间数据存 Task 字段 - translate_service: 长度排序批处理,padding 浪费减少 91% - model_manager: ASR/翻译不共驻,BatchedInferencePipeline 批量解码 - 日志分级: INFO=任务流转里程碑,DEBUG=进度详情;默认 INFO - 前端: 日志最新在上+滚动感知+退避轮询;24h 时间;上传中状态显示 - /health: 返回完整 Whisper/NLLB 配置 - upload_service: 单事务 complete + 扩展名白名单 - task_router: 合并 UploadSession 虚拟任务到列表 - Dockerfile: CPU/GPU 独立构建链,deps 缓存稳定 - prefetch_models: 安装时预下载模型权重
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
"""分片上传路由:建会话 / 查状态 / 传分片 / complete。
|
||||
|
||||
协议与 server 完全一致,区别仅在 complete 后创建的是转写 Task 而非 UploadedFile。
|
||||
complete 成功后创建转写 Task 并交由 scheduler 入队。
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
@@ -60,10 +60,11 @@ def complete_session(
|
||||
"""拼接分片 + 创建转写任务 + 入队管线。
|
||||
|
||||
controller 负责编排:service.complete 只管存储(拼接 + 建 Task),
|
||||
管线触发由 controller 调用,service 不依赖 pipeline(避免循环依赖)。
|
||||
管线触发由 controller 调用 scheduler(ffmpeg 异步 + GPU 串行调度),service 不依赖
|
||||
scheduler(避免循环依赖)。
|
||||
"""
|
||||
resp = service.complete(upload_id)
|
||||
# 仅新建任务时入队(幂等 complete 返回的也是同一 task_id,enqueue 幂等无副作用)
|
||||
from ..services.pipeline import enqueue_task
|
||||
from ..services.scheduler import enqueue_task
|
||||
enqueue_task(resp.task_id)
|
||||
return resp
|
||||
|
||||
Reference in New Issue
Block a user