如何解决Twitter V2 API 429 HTTP 错误未被捕获 问题和错误:
背景和代码
我有以下函数来处理基于 HTTP status codes 的 Twitter V2 API 中的速率限制。
requests
此函数从 response = requests.get(
url,headers=self._header,params=payload
)
response = manage_rate_limits(response)
调用中获取响应对象,如下所示
url
在上面的响应调用中,参数如下:
哪里
-
params
= Twitter 的基本端点 URL(在本例中为完整档案学术搜索) -
payload
/headers
= 端点搜索运算符的组合(这些应该无关紧要,但我可以在必要时包括) -
self._bearer_token
/bearer_token
是以下正确标题形式中的用户self._header = {"Authorization": f"Bearer {MY_BEARER_TOKEN}"}
rate_limit_manager
问题和错误:
使用上面的代码,我得到一个长时间运行的脚本,它从 Traceback (most recent call last):
File "/scratch/mdeverna/Superspreaders/src/get_rts_of_user.py",line 218,in get_rts_of_user
full_archive_search = True
File "/nfs/nfs5/home/scratch/mdeverna/osometweet/osometweet/api.py",line 248,in search
response = self._oauth.make_request(url,payload)
File "/nfs/nfs5/home/scratch/mdeverna/osometweet/osometweet/oauth.py",line 181,in make_request
response = manage_rate_limits(response)
File "/nfs/nfs5/home/scratch/mdeverna/osometweet/osometweet/rate_limit_manager.py",line 67,in manage_rate_limits
response.status_code,response.text
Exception: Request returned an error: 429 {"title":"Too Many Requests","type":"about:blank","status":429,"detail":"Too Many Requests"}
函数返回以下错误。
# If we get this far,we've done something wrong and should exit
raise Exception(
"Request returned an error: {} {}".format(
response.status_code,response.text
)
我不明白的是,打印此异常的行是...
response.status_code
... 这说明了 429
打印(等于)validator
,但是,此函数中较早的条件准确地检查此状态代码,但似乎错过了.这似乎是检查状态代码 = 429 是否被跳过的条件,只是在下面打印状态代码为 429?
这里发生了什么?
解决方法
即使状态代码是 429、500 或 503,您也会从 if/elif/elif 序列的底部流出,直接进入 raise
。您是否打算在每个结尾处return
?还是您的意思是将 raise
放在 else:
子句中?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。