You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python调用GitHub API获取用户仓库信息时触发速率超限问题求助

你遇到的API limit exceeded报错是GitHub的接口请求频率限制机制触发导致:未携带身份认证的请求每小时仅允许调用60次,携带token的认证请求每小时允许调用5000次。你当前代码同时使用带认证的PyGitHub接口和未携带token的原生requests发起请求,额外消耗了大量匿名额度,是触发限制的核心原因。

修复方案

  • 统一使用PyGitHub封装的接口发起所有请求,所有请求自动携带你配置的token,可享受每小时5000次的认证额度,避免额外消耗匿名额度
  • 初始化PyGitHub实例时开启自动重试逻辑,触发额度限制时会自动等待额度重置后再发起请求
  • 兼容仓库主分支命名规则(部分仓库主分支为main而非master),减少无效请求导致的额度浪费

优化后代码

import base64
from github import Github
from pprint import pprint

# Github用户名
username = "username"
# 填入你的GitHub token
g = Github("github token", retry=3, timeout=10)
# 按用户名获取用户对象
user = g.get_user(username)
print(user.name)

for repo in user.get_repos():
    print("REPO NAME :", repo.name)
    # 直接调用PyGitHub内置方法获取仓库语言,自动走认证请求
    language = repo.get_languages().keys()
    print(language)
    try:
        # 先获取仓库默认分支名,避免写死master导致无效请求
        default_branch = repo.default_branch
        commit = repo.get_commit(sha=default_branch)
        print("COMMIT DATE AND TIME :", commit.commit.author.date)
    except Exception as e:
        print("NA")
    # 直接调用PyGitHub内置方法获取贡献者,自动走认证请求
    contributors = [c.login for c in repo.get_contributors()]
    print("contributors :", contributors)

如果单小时请求量超过5000次,可在GitHub开发者设置中申请更高的API调用额度,普通个人使用场景下5000次/小时足够覆盖绝大多数需求。

内容的提问来源于stack exchange,提问作者Max_len

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 13:54:05