我偶尔注意到我的 Drive SDK 调用会定期失败并出现 500 错误,重试请求通常会立即修复错误。查看 Google 文档,它建议使用指数退避技术,我编写了自己的实现,效果很好,但是在调试时我碰巧碰到接口 BackOffPolicy,经过更多调查,我什至发现了 ExponentialBackOffPolicy 实现。
因此,与其自己管理这个,我认为最好删除我的实现并让 SDK 为我做这件事。退避策略(据我所知)可以通过构建的 HTTP 请求设置,因此在手动构建请求或使用批处理请求时非常容易使用,但是在使用核心 SDK 时我似乎找不到最简单的注入位置,例如,如果我想为以下内容设置退避策略:
drive.files().get(id).execute();
我不能做类似的事情:
drive.files().get(id)
.setBackOffPolicy(new ExponentialBackOffPolicy())
.execute();
我需要这样做:
drive.files().get(id)
.buildHttpRequest()
.setBackOffPolicy(new ExponentialBackOffPolicy())
.execute();
但是,如果我这样做,那么我还需要重现 Drive.Files.Get 的执行方法的解析逻辑并将结果转换为 File 对象,这显然不是一个理想的方法。是否有一种更简单的方法可以“一般”将其添加到请求中,或者是否有一种方法可以为所有请求设置默认退避策略?
如果没有,也许这可以被引入到 Drive SDK 的未来版本中?
谢谢,大卫