老师,关于同时转移和下载的问题
来源:9-8 编码实战: 异步转移文件测试+小结

carefree_
2020-07-07
逻辑:
文件转移成功后,我就把本地磁盘的文件删除了。
场景:
正在从本地磁盘下载的文件,同时也正在转移
问题:
同时下载和转移的文件,如果转移先完成,本地的文件也删了,造成下载失败,xiaomo老师这个问题如何解啊?
写回答
1回答
-
同学你好,有几个思路,可以参考一下:
(1)删除的操作可以延迟执行。假设我们规定一个下载操作的有效时间是4个小时(超过4个小时都没下载完,当这次下载就失败了),那么在转移完成后写一条消息到待删队列;由一个统一的服务来做删除本地文件的操作,每次从队列里拿消息出来时,判断是否到时间可以删,是则直接删除文件,否则再放回队列。
(2)针对还没完成转移的文件,在用户请求download时,记录一下状态;download完成也更新一下状态。对于转移完成的文件,由专门的服务通过判断这个下载状态来做删除本地文件的操作。没有人下载时,就可以删除了。
(3)忽略这种失败,按实际线上场景的经验,刚上传完而还没转移完成的文件就出现下载的概率比较低。对于用户来说,出现下载失败的情况看上去就是偶发的,只要重新下载即可。
10
相似问题