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: 子句中?

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...