我正在使用java中的admin sdk检索用户的照片。我也实现了指数退避。
但是在几次请求之后,我收到403错误代码和速率限制异常消息。
有2000个用户和10到20个用户的照片。它开始给出403错误 并且使用指数退避需要很长时间才能执行。
try {
Directory directoryService = getDirectoryService(adminEmail);
Photos photos = directoryService.users().photos();
com.google.api.services.admin.directory.Directory.Users.Photos.Get get = photos.get(userEmail);
get.setUserKey(userEmail);
UserPhoto userPhoto = get.execute();
} catch (Exception e) {
if(e.getMessage().contains("403"))
{
try {
Thread.sleep((1 << userCount) * 1000 + randomGenerator.nextInt(1001));
} catch (InterruptedException e1) {
e1.printStackTrace();
log.warning("Exception Interrupted in getting photo1::->"+e1.getCause());
}
}
}
任何人都可以就此问题向我提出建议吗?
答案 0 :(得分:1)
Directory directoryService = getDirectoryService(adminEmail)
的结果,而不是执行每个请求。
在node.js下,我的令牌有效期为一小时(它们包含一个expires_in
字段,这是一个unix时间戳)。我将我的代码修改为仅在其到期后的300秒内请求一个新令牌,现在我可以以每秒10次的速度点击,这足够快,达到每天150,000个请求的每日限制。