我正在使用PyCurl调用GitHub搜索API并提取一些信息。下面是调用API的代码片段。
from io import BytesIO
import pycurl
url = f"https://api.github.com/search/code?q=import%2Bkeras+size:1..100+language:python&page=1&per_page=100"
output = BytesIO()
request = pycurl.Curl()
request.setopt(pycurl.HTTPHEADER, [f'Authorization: token {access_token}'])
request.setopt(request.URL, url)
request.setopt(request.WRITEDATA, output)
request.perform()问题是,GitHub只在3-4次请求之后阻塞了我的访问令牌。但是在GitHub文档中,每小时5000次请求被提到是对请求数量的限制。我正在使用Python 3.8和PyCurl 7.44.1。你有办法解决这个问题吗?
发布于 2022-01-31 21:09:42
最后,我在每个API请求之间增加了5秒的睡眠时间,问题已经解决了。
谢谢你的贡献。
发布于 2022-01-28 20:55:40
“Search API有一个自定义的利率限制,与其他rest的利率限制分开”
您可以检查您的利率限制状态如下:
curl \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/rate_limit发布于 2022-01-28 23:53:51
GitHub对搜索请求有不同的速率限制,因为它们比普通的API调用要昂贵得多。您可以在端点https://api.github.com/rate_limit查询它们。
然而,在你的例子中,你看到的是二级利率限制,这意味着你正在做的事情看起来可疑,并且因为这个原因你被阻止了。唯一能找出原因的方法是联系GitHub支持。
我将指出,使用唯一的标识User-Agent头以便将您的流量与其他通信量区分开来是一种最佳实践。这可能有帮助,也可能没有帮助,但libcurl是一个非常常见的用户代理,而且由于会有相当多的人将其用于滥用目的,因此您的流量可能会被自动系统标记。
https://stackoverflow.com/questions/70900097
复制相似问题