【发布时间】:2019-03-21 14:07:37
【问题描述】:
我在 Jupyter Notebooks 中使用 Python (3.5) 向 API 发出大量请求。 代码如下所示:
...
r = requests.post(url=url, json=json, headers=headers)
bar = r.json()["foo"]["bar"]
...
我遇到的问题是它在大多数情况下都能正常工作,但似乎在上面的第二行随机抛出类型错误:“字符串索引必须是整数”。 有人可能会推断这意味着返回的值是一个简单的字符串/不是 JSON 对象,因此不能用键访问,但事实并非如此:如果我用完全相同的请求重新启动(相同的 url,相同的 JSON 查询,相同header),不会抛出错误!
这似乎是随机发生的:有时它可以连续处理数千个请求,有时它会在几百个请求之后发生。 知道为什么会发生这种情况吗?我一直在寻找答案,但没有找到相关的答案。
注意:我意识到我没有提供可重现的示例,但我不能。 我什至无法自己重现该问题,因为它是间歇性发生的。
【问题讨论】:
-
为什么不包含一个
try-except块来保存/打印错误的 JSON 对象? -
相同的请求并不意味着相同的答案。您应该编写记录返回的未处理内容的代码(至少在发生错误的情况下)。
-
也许有些请求没有返回您认为的那样,请考虑保存这些错误响应对象之一,并观察它与您想要的响应之间的区别
-
@all:是的,我应该这样做。不知道为什么我没有考虑过。我确实有一个 try-except,但它会重试请求而不是打印出错误的 JSON 对象。
标签: python json python-3.x python-requests