在我的应用程序中,我使用令牌向 GitHub 搜索 API 发出经过身份验证的请求。我每 2 秒发出一次请求,以保持在每分钟 30 个请求的主要速率限制内(因此不是同时进行),并且在进行实际的搜索 API 调用之前,我还会使用 GitHub 速率限制 API 验证每个请求。
即使在罕见的意外并发请求的情况下,它们也不太可能是为了同一个令牌。
我似乎遵循主要和次要最佳实践文档中提到的所有规则。尽管如此,我的应用程序仍然受到二级速率限制,我不知道为什么。谁能帮我解释为什么会发生这种情况?
编辑:
示例代码:
const search = async function(query, token) {
var limitResponse;
try {
limitResponse = JSON.parse(await rp({
uri: "https://api.github.com/rate_limit",
headers: {
'User-Agent': 'Request-Promise',
'Authorization': 'token ' + token
},
timeout: 20000
}));
} catch (e) {
logger.error("error while fetching rate limit from github", token);
throw new Error(Codes.INTERNAL_SERVER_ERROR);
}
if (limitResponse.resources.search.remaining === 0) {
logger.error("github rate limit reached to zero");
throw new …Run Code Online (Sandbox Code Playgroud)