从公共项目中克服GitHub API限速?

问题描述 投票:1回答:1

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

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

我可以在Ansible中使用某种秘密管理系统或通过Travis环境变量公开价值,但有没有一种标准的做法来处理公共代码的这些场景?

github rate-limiting
1个回答
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身份验证库应该有一个缓存选项。

© www.soinside.com 2019 - 2024. All rights reserved.