错误429:令牌不足(DefaultGroupUSER-100s)定义用户的原因是什么?

Lon*_*Rob 5 google-api google-oauth gapi google-sheets-api

tl / dr是否所有100个使用相同客户端ID的设备都具有100个用户,具有自己的限制或一个用户共享限制?

我有一个可读写Google表格的网页。

因为该网页需要知道某个单元是否已更改,所以它每1000毫秒轮询一次服务器:

var pollProcId = window.setInterval(pollForInput, 1000);
Run Code Online (Sandbox Code Playgroud)

一个在哪里pollForInput

gapi.client.sheets.spreadsheets.values.get(request).then(callback);
Run Code Online (Sandbox Code Playgroud)

当我尝试将这个应用程序与100名学生一起使用时,我收到许多429错误代码(超过成功读取的错误代码),以响应google.apps.sheets.v4.SpreadsheetsService.GetValues请求:

错误代码429-a-thon

我的许多用户都没有看到甚至第一个请求回来的消息。

AnalyticsDefaultGroupUSER-100s错误响应页面,据我所知,这些是错误:

表示每位用户每项目配额每100秒请求已用尽。

但是由于我的应用程序每1000毫秒仅请求一次,因此我不希望看到这么多429s,因为我每100秒(每秒1个)的请求数限制为100,因此只有其应用程序在100秒内未完成的用户才应已经收到了429

我知道我应该实现指数退避(我保证,我会做的),但是我担心我误解了这种情况下的“用户”。

每个用户都使用他们自己的设备(因此大概具有不同的IP地址),但是他们都使用我的“客户端ID”。

这种情况是计数每秒发出一个请求的用户数量是多少,还是每秒发出一百个请求的单个用户数量?

小智 1

那么,用户意味着per user quota发出请求的单个用户。让我们以 Sheets API 为例,它100Read requests per 100 seconds per user. 这意味着每秒只有一个用户可以发出请求。请注意,读取请求与写入请求具有相同的配额集。但这两组配额有自己的一组配额,并不共享相同的限制配额。

如果您想要比默认更高的配额,则可以使用此表单或访问开发人员控制台来申请更高的配额,然后单击要增加的配额中的铅笔图标。

我还建议您尽快进行指数退避,因为它可以帮助您避免出现此类错误。

希望对您有帮助。