comwrg / bilibiliupload

This project is not maintained anymore.
MIT License
140 stars 35 forks source link

WIP: add retry when sigle part file upload failed #25

Closed kaidiren closed 5 years ago

kaidiren commented 5 years ago

image

经常遇到单片上传失败的情况。所以加了个重试。

kaidiren commented 5 years ago

还在测试中,请不要立马合并~

有个问题想问下作者的意向,单片上传出错后或者说重试了几次后,如果还是失败了,给个异常会比较好吧。现在这样子,不看日志的话确实是不知道出错了,然后稿件都卡在哪里了。会觉的很莫名。

comwrg commented 5 years ago

感觉可以加个max_retry作为参数 还有输出的话, 其实我想改成callback进行回调, 让开发者自行决定应该干什么

kaidiren commented 5 years ago

我提的pr 里已经有这个类似的变量了只不过写的是三次,没提取成参数。 写成回调这个估计不是很好用。因为出错的场景往往是单个小 part 上传出错了,即使给了callback,调用的人也没发控制上传的逻辑了,只能说是要不要继续重试。或者就是把重试的逻辑提取成一个函数参数,让用户可以自己定义。

comwrg commented 5 years ago

那就只能直接把max_retry写成参数这样子

kaidiren commented 5 years ago

我改下自己先用下试试好不好使

comwrg commented 5 years ago

如果上传次数大于max_retry这样子的话, 也只能手动来排除错误了

kaidiren commented 5 years ago

是这样子的。

kaidiren commented 5 years ago

添加了如下特性

  1. 重试 默认 5次, 默认以接口返回 200 为判定成功依据
  2. 重试时会打出 重试 log
  3. 每次重试前会等待 重试次数 * 5 秒的等待时间,因为当时服务器大概率是 5xx 的,或者是网络有问题的。稍微等一下.
  4. 重试次数耗尽仍有错误的时候抛出异常
kaidiren commented 5 years ago

我自己还没测试过,明早测试下。

comwrg commented 5 years ago

好, 非常感谢!

kaidiren commented 5 years ago

目前正常的上传是 ok 的,还没有遇到多次重试的情况,我再观察一段时间

kaidiren commented 5 years ago

image

重试已生效,工作非常顺利。基本上重试一次就好了。可以合并发新版本了。

@comwrg

comwrg commented 5 years ago

非常感谢!