如何使用webman实现下载大文件并不阻塞当前请求返回进度呢?

楚羽幽

问题描述

如图展示业务流程如下

  1. 提交一个视频文件到webman
  2. webman去下载视频文件
  3. 后端通过SSE通知前端列表更新进度,下载进度,是否失败,是否完成等等

疑问

这个接口返回整个列表这个视频文件可能会很大,导致下载超时或下载失败

当前我的实现方案

下载视频文件的过程,前端提交视频URL给后端,然后使用队列下载的
还有什么其他方案吗?能否使用协程去做这件事呢?

343 3 1
3个回答

轻云蔽月

大文件上传或者下载,一般都用断点续传

  • xy3 15天前

    io密集可以用协程

nitron

这种长耗时任务走队列,不用考虑协程

POST /submit 只入队、立即返回 task_id;队列做下载,下载时通过 Redis publish 进度;前端通过 SSE 订阅 /events?task_id=... 实时收到进度事件。这样提交接口不会因为大文件下载而超时或阻塞

  • 暂无评论

如果没有非常严格的文件权限要求,建议使用oss服务来存储视频文件,无论是下载速度和便捷度都很高。下载的进度条前端是可以做的。

  • 暂无评论
🔝