github - 克服公共(public)项目的 GitHub API 速率限制?

标签 github rate-limiting

我有一个公共(public)存储库,它是 Ansible 角色。此 Ansible 角色使用 GitHub API 来获取给定存储库的最新版本。我使用此元数据以便随后下载给定项目的最新版本二进制文件。

不幸的是,当我在 Travis 中运行测试并偶尔在本地计算机上运行测试时,我遇到了 GitHub 的 API 速率限制。由于这是一个面向公众的项目,我有什么选择来克服这个速率限制?

可以在 Ansible 中使用某种 secret 管理系统或通过 Travis 环境变量公开该值,但是公共(public)代码是否有处理此类场景的标准实践?

最佳答案

未经身份验证的请求每小时只能获得 60 个。经过身份验证的请求每小时获得 5000 个。

要进行身份验证,generate a personal API access token供项目使用。将其放入encrypted Travis environment variable或其他一些方式来存储加密的 secret (例如,Rails 内置了 encrypted credentials 。使用该 token 来访问 API。

为该项目创建一个单独的 Github 帐户并为此使用 API token 。这可以避免与其他人共享其速率限制。

尽可能在本地克隆上使用 Git 命令。例如,如果您想查找提交而不是 doing it via the API ,克隆存储库并使用普通的 Git 命令。定期缓存克隆和 git fetch 以使它们保持最新。

最后,利用 conditional requests 。它们使用 HTTP header ,因此您可以安全地使用缓存的查询。这些不计入您的速率限制。一个好的 Github 身份验证库应该有一个缓存选项。

关于github - 克服公共(public)项目的 GitHub API 速率限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54833509/

相关文章:

Git LFS 不工作

rate-limiting - Lyft是否将请求限制为整个应用程序的API?

api - 对 token 使用 NGINX 速率限制

git - 如何使用 Github Desktop 克隆非 github 托管的存储库

github - Github 和 npm markdown 之间的区别

javascript - 使用 GitHub API 编辑提交消息并将其添加到文件

node.js - 我应该在应用程序级别应用速率限制还是使用 Nginx 的功能?

IIS 动态 IP 限制白名单

c# - 为 Web 请求实现限速算法的最佳方法是什么?

eclipse - 如何关闭 Eclipse 对 .md 文件的错误报告