tl / dr使用相同的客户端ID计数100个设备,只有100个用户,有自己的限制或一个用户共享限制?
我有一个可以读取和写入Google表格的网页。
由于网页需要知道某个单元格是否已更改,因此每1000ms轮询一次服务器:
var pollProcId = window.setInterval(pollForInput, 1000);
其中pollForInput
只有一个:
gapi.client.sheets.spreadsheets.values.get(request).then(callback);
当我尝试将这个应用程序与100名学生一起使用时,我收到了许多429
个错误代码(比我成功读取的更多)以回应google.apps.sheets.v4.SpreadsheetsService.GetValues
个请求:
我的许多用户甚至没有看到第一个请求回来。
据我所知,根据the error responses page,这些是AnalyticsDefaultGroupUSER-100s
错误:
表示每个项目每个用户每100秒请求配额 已经筋疲力尽了。
但是我的应用程序每1000毫秒只请求一次,我不希望看到这么多429
因为我每100秒(每秒1次)有100个请求的限制所以只有那些应用程序的用户没有在100秒内完成应该收到429
。
我知道我应该实施指数退避(我会做,我保证),但我担心我误解了这个背景下的“用户”是什么。
每个用户都在使用他们自己的设备(因此可能有不同的IP地址),但他们都在使用我的“客户端ID”。
此方案是否计算每秒发出一个请求的用户数量,或者每秒发出一百个请求的单个用户?
答案 0 :(得分:1)
嗯,per user quota
中的用户表示单个用户发出请求。因此,让我们使用表格API,100
的配额为Read requests per 100 seconds per user
。这意味着只有一个用户每秒可以发出请求。请注意,Read请求与Write请求具有相同的配额集。但这两套配额都有自己的配额,并没有分享相同的限额。
如果您想要比默认配额更高的配额,则可以使用此form或访问开发者控制台申请更高的配额,然后点击要增加的配额中的铅笔图标。
我还建议您尽快执行指数退避,因为它可以帮助您避免出现此类错误。
希望它对你有所帮助。