我正在开发一个需要向GitHub发送大量HTTP请求的Web应用程序。在成功执行n次请求后,我会收到HTTP 403: Forbidden
错误,伴随着API Rate Limit Exceeded
消息。
是否有办法增加GitHub的API速率限制或完全绕过它?
我正在开发一个需要向GitHub发送大量HTTP请求的Web应用程序。在成功执行n次请求后,我会收到HTTP 403: Forbidden
错误,伴随着API Rate Limit Exceeded
消息。
是否有办法增加GitHub的API速率限制或完全绕过它?
这是一个相对解决方案,因为限制仍然是每小时5000个API调用, 或者每分钟约80个调用,这真的不算太多。
我正在编写一个工具来比较组织中的350多个仓库并找到它们之间的相关性。 好吧,该工具使用python进行git/github访问,但我认为这不是相关点。
在一些初步成功后,我发现GitHub API的功能在#调用数和带宽方面过于有限, 如果你真的想要向repos提出很多深入的问题。
因此,我改变了概念,使用了不同的方法:
与其完全使用GitHub API,我编写了一个GitHub Mirror脚本, 通过pygit2使用我的并行python脚本能够在不到15分钟的时间内镜像所有这些仓库。
然后,我尽可能地使用本地仓库和pygit2来编写所有东西。 这种解决方案的速度提高了100倍或更多,因为既没有API也没有带宽瓶颈。
当然,这需要额外的努力,因为pygit2 API与我喜欢的GitHub解决方案部分的github3.py有很大区别。
这实际上是我的结论/建议: 处理大量Git数据的最有效方法是:
本地克隆您感兴趣的所有仓库
使用pygit2在本地编写尽可能多的东西
使用github3.py API或您喜欢的其他API编写其他内容, 如公共/私有信息、拉取请求、访问wiki页面、问题等。
这样,您可以最大程度地提高吞吐量,而您的限制现在是程序的质量。(也不是简单的)
curl -u <token>:x-oauth-basic https://api.github.com/user
在标头中设置和发送OAuth2Token
curl -H "Authorization: token OAUTH-TOKEN" https://api.github.com
将OAuth2Token设置并发送为URL参数
curl https://api.github.com/?access_token=OAUTH-TOKEN
curl 'https://api.github.com/users/whatever?client_id=xxxx&client_secret=yyyy'
GET /repos/{owner}/{repoA}
GET /repos/{owner}/{repoB}
query {
repoA: repository(owner:"owner", name:"repoA") {
...
}
repoB: repository(owner:"owner", name:"repoB") {
...
}
}
根据仓库的查询情况,你可以在一个调用中添加更多的仓库,每个调用仍然只使用1点。
我可以建议您成为一个档案管理员 https://github.com/github/site-policy/issues/56。
顺便说一下,即使是“非存档管理员”也可以访问公共数据...
所有工具都在Github上。