即使遵守请求限制,服务器也会不断返回 429

问题描述

我正在从公司的 API 下载一些数据。根据其 API 文档,特定端点的请求限制为 60 / 1 分钟。在第 60 个请求之后,我不断收到 429 响应,即使在每个请求后等待 2 秒也是如此。 “X-RateLimit-Remaining”似乎只是从 60 倒计时到 0,但在某些情况下,它也会在某个随机时刻重置回 60。我在这里错过了什么?

import requests
import time

token = ''
header = {'Content-Type': 'application/json','Accept': 'application/json','Authorization': 'Bearer {}'.format(token)}

for i in range(70):

    response = requests.get('',headers=header,timeout=10)

    print(i)
    print(response.status_code)
    print(response.headers)
    print('---------------')
    time.sleep(2)

结果:

0
200
{'Date': 'Tue,01 Jun 2021 17:43:57 GMT','Server': 'Apache','Cache-Control': 'no-cache,private','X-
RateLimit-Limit': '60','X-RateLimit-Remaining': '58','Access-Control-Allow-Origin': '*','Content-
Encoding': 'gzip','vary': 'Accept-Encoding,Authorization','x-frame-options': 'SAMEORIGIN','Transfer-
Encoding': 'chunked','Content-Type': 'application/json'}
---------------
1
200
{'Date': 'Tue,01 Jun 2021 17:44:03 GMT','X-RateLimit-Remaining': '57','Content-Type': 'application/json'}
---------------
...

58
200
{'Date': 'Tue,01 Jun 2021 17:48:23 GMT','X-RateLimit-Remaining': '0','Content-Type': 'application/json'}
---------------
59
429
{'Date': 'Tue,01 Jun 2021 17:48:25 GMT','X-RateLimit-Limit': '60','X-RateLimit-
Remaining': '0','Retry-After': '86','X-RateLimit-Reset': '1622569791','content-encoding': 'gzip','vary': 'Accept-
Encoding,'transfer-encoding': 'chunked','Content-Type': 
'application/json'}
---------------
60
429
{'Date': 'Tue,01 Jun 2021 17:48:27 GMT','Retry-After': '84','Content-Type': 
'application/json'}
---------------
...

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)