克服公共项目中的GitHub API速率限制?

时间:2019-02-22 19:00:28

标签: github rate-limiting

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

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

可以在Ansible中使用某种秘密管理系统,还是可以通过Travis环境变量公开其值,但是是否存在处理此类公共代码场景的标准做法?

1 个答案:

答案 0 :(得分:1)

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

要进行验证,请generate a personal API access token供项目使用。以encrypted Travis environment variable或其他方式存储加密机密(例如,Rails内置encrypted credentials。使用该令牌访问API。

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

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

最后,使用conditional requests。这些使用HTTP标头,因此您可以安全地使用缓存的查询。这些不计入您的速率限制。好的Github身份验证库应具有用于缓存的选项。