[英]how to avoid 429 error requests.get() in python?
我正在尝试使用 requests.get() 从 pubg API 获取一些数据。
代码执行时,response.status_code 返回 429。
拿到429后,200就拿不到了。
如何解决这种情况?
这是我的代码的一部分。
for num in range(len(platform)):
url = "https://api.pubg.com/shards/"+platform[num]+"/players/"+playerID[num]+"/seasons/"+seasonID+"/ranked"
req = requests.get(url, headers=header)
print(req.status_code)
[output]
200
429
根据https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429
您一次/在短时间内发送了太多请求。 我推荐使用time.sleep(10)
import time
for num in range(len(platform)):
....
....
time.sleep(10)
我用了 10 秒,但你必须测试它并了解需要多少时间间隔。 我还建议您在确定合适的睡眠时间后使用https://pypi.org/project/retry/ 。
正如 sam 所提到的,HTTP 错误 429 意味着您在一定时间内发出了太多请求。
根据官方 PUBG API 文档,API 实际上通过在每个请求中发送一个名为X-RateLimit-Limit
的额外 header 来告诉您这些速率限制。 每个请求还有一个名为X-RateLimit-Remaining
的 header,它会告诉您当前还有多少请求,直到下一次速率重置发生在第三个 header X-RateLimit-Reset
中指定的时间。
由于您似乎使用了请求库,因此在 python 中发出请求后,您可以使用简单的req.headers
访问这些标头。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.