1

问题

当我使用 PyGitHub 时,我超过了 GitHub API 速率限制——但在我使用准系统 HTTP 请求时没有。

这很奇怪,因为我的自定义客户端可以在 ≈500 个请求中获得我需要的内容,而 PyGitHub 超过 5000 个以获得相同的结果。

5k 请求/小时

我的应用程序使用带有个人访问令牌的基本身份验证。

from github import Github
g = Github(token)

关于速率限制的GitHub API 文档说我每小时有 5k 个请求用于经过身份验证的请求。

对于使用基本身份验证或 OAuth 的 API 请求,您每小时最多可以发出 5000 个请求。无论是使用基本身份验证还是 OAuth 令牌,经过身份验证的请求都与经过身份验证的用户相关联。

操作

要点是扫描我组织中的所有存储库,按主题过滤,并下载特定目录。

这是我如何使用自定义客户端执行此操作的伪代码。这可以在约 500 个请求中完成(扫描约 10k 存储库并从其中约 10 个中下载目录)。

# Get the first page...
/orgs/<my-org>/repos

# Iterate through the pages...
for page in pages:
    /organizations/<my-org>/repos?page=page

# Filter repos by topic(s)...
repos = [repo for repo in repos if '<my-topic>' in repo['topics']]

# Download some content from qualifying repositories
for repo in repos:
    /repos/<my-org>/<repo-name>/contents/<my-path>
    ...recursively crawl directory at <my-path>

这是使用 PyGitHub超过速率限制的类似方法。

from github import Github
g = Github('<token>')
org = g.get_organization('tr')
repos = org.get_repos(type='all')
repos = [repo for repo in repos if '<my-topic>' in repo.get_topics()]
for repo in repos:
    content = repo.get_content('<my-path>')
    ...recursively crawl directory at <my-path>
4

0 回答 0