联系SDK 403频率超过上限(Admin sdk 403 Rate Limit Exceeded)

2019-10-20 06:25发布

我检索使用管理SDK中java.I用户的照片已经实现指数退避也。

但很少有人请求后,我得到与速度有限的例外消息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());
            }
        }
    }

谁能给我这个问题的建议?

Answer 1:

嗯,我已经找到了问题。 限速是因为你申请一个新的OAuth2访问令牌为每个请求。 您需要缓存的结果Directory directoryService = getDirectoryService(adminEmail)而不是做每个请求。

在Node.js的,我的令牌是好的一个小时(它们含有expires_in领域这是一个UNIX时间戳)。 我修改了代码,只是它的300秒到期内申请新的令牌,现在我可以打的东西在每秒10张,这是比速度不够快,达到每天可执行150,000请求涨停就好了。



文章来源: Admin sdk 403 Rate Limit Exceeded