使用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
相关产品推荐
相关产品推荐

