Google Drive API quota exceeded -
i'm creating channel receive changes on users on application. main problem after 2-3 webhooks, receive error says user has exceeded quota limits.
that has no sense, because received 2 post message (i saw on ngrok).
i've went on google console on drive api , quota. each time receive webhook amount of queries increased 500. so, when user make 2 changes , receive 2 webhooks, number of queries exceed 1000 allowed google , receive error.
that's code enable channel:
@get @path("/enable") public void enable(@context httpservletrequest request, @context httpservletresponse response) throws ioexception { credential credential = initflow().loadcredential("user"); drive service = new drive.builder(http_transport, json_factory, credential).setapplicationname(application_name).build(); channel channel = new channel(); channel.setid(uuid.randomuuid().tostring()); channel.settype("web_hook"); channel.setaddress("https://389825dc.ngrok.io/gdriverest/app/gdrive/webhook"); startpagetoken page = service.changes().getstartpagetoken().execute(); gdrive.savedpagetoken = page.getstartpagetoken(); service.changes().watch(savedpagetoken, channel).execute(); } and following 1 webhook:
@post @path("/webhook") public void webhook(@context httpservletrequest request, @context httpservletresponse response) throws ioexception { credential credential = initflow().loadcredential("user"); drive service = new drive.builder(http_transport, json_factory, credential).setapplicationname(application_name).build(); string pagetoken = savedpagetoken; while (pagetoken != null) { changelist changes = service.changes().list(pagetoken).execute(); (change change : changes.getchanges()) { log.info("change found file: " + change.getfileid()); } if (changes.getnewstartpagetoken() != null) { savedpagetoken = changes.getnewstartpagetoken(); } pagetoken = changes.getnewstartpagetoken(); } response.setstatus(200); } this error:
caused by: com.google.api.client.googleapis.json.googlejsonresponseexception: 403 forbidden { "code" : 403, "errors" : [ { "domain" : "usagelimits", "message" : "user rate limit exceeded", "reason" : "userratelimitexceeded" } ], "message" : "user rate limit exceeded" } why happening?
there error in code. had change following:
pagetoken = changes.getnewstartpagetoken(); to
pagetoken = changes.getnextpagetoken(); the huge amount of queries because requesting on every loop new start page token, forcing infinite loop.
Comments
Post a Comment