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

Python循环调用GitHub API触发限流时如何重试当前迭代?

解决方案

实现这个需求的核心是给单个仓库ID的请求逻辑加上循环控制,只有成功获取到目标数据后才进入下一个ID的处理,代码修改如下:

import requests
import time

max_retry = 3 # 可选:设置最大重试次数,避免无限重试卡住
for i in repoID:  # 获取仓库名称
    retry_count = 0
    while retry_count < max_retry:
        print(i)
        response= requests.get('https://api.github.com/repositories/{}'.format(i),headers=headers)
        res_json = response.json()
        if 'full_name' in res_json:
            repokey[str(i)] = res_json['full_name']
            break # 成功获取,跳出当前ID的循环,处理下一个ID
        else:
            # 也可额外判断403响应状态码,确认是限流触发后再等待
            print('触发限流,ID为{}的仓库请求失败,等待120秒,当前重试次数{}'.format(i, retry_count+1))
            time.sleep(120)
            retry_count +=1
    else:
        # 达到最大重试次数后的处理逻辑,可根据需求调整
        print("ID为{}的仓库达到最大重试次数,跳过".format(i))
补充说明
  • 上述代码给每个ID增加了最大重试次数限制,避免因为接口长期异常导致程序无限卡住,你可以根据自己的需求调整max_retry的数值,或者移除重试次数判断改用无限重试。
  • 如果你想更精准的控制等待时长,可以读取GitHub API响应头中的X-RateLimit-Reset字段,该字段返回限流结束的时间戳,用这个值减去当前时间戳就能得到准确的等待时长,无需固定等待120秒。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:06:03