【发布时间】:2017-07-25 06:45:42
【问题描述】:
您好,我尝试请求一些 json,一切正常,但有时请求出错,可能是站点堆栈或关闭连接,因为我每 15 分钟请求一次 json。
代码在这里:
def request_coins(config):
coins = None
print(str(datetime.now()) + ' - REQUESTING Coins')
while coins is None:
try:
coins = (requests.get(url=str(config['UrlPath']['url']) + str(config['UrlPath']['userrates'])))
except:
print(str(datetime.now()) + " - Site didn't respond. Reconnecting in 10 sec")
time.sleep(10)
if coins is not None:
coins = coins.json()['coins']
print(str(datetime.now()) + ' - Coins received correctly')
return coins
问题是 try - catch 在我的情况下不起作用。 print(str(datetime.now()) + ' - REQUESTING Coins') 中的请求堆栈,我没有收到任何异常和消息给 cmd
print(str(datetime.now()) + " - Site didn't respond. Reconnecting in 10 sec")
据我了解try:
coins = (requests.get(url=str(config['UrlPath']['url']) +
str(config['UrlPath']['userrates']))) 的代码堆栈
甚至不要去except:
知道如何解决吗?
【问题讨论】:
-
你的代码结构对于
if coins is not None:是否正确?因为python代码是基于你的标签的。 -
是的,抱歉错过了选项卡,用原始代码写在这里一切正常
-
我猜你的
requests.get只是忙,没有引发错误......所以你应该看看requests结合try - except。你见过this吗?也许Response.raise_for_status接受的答案的第二部分可能会有所帮助? -
抱歉重复发布,但我刚刚找到this,其中@gatto 写道“另请注意,默认情况下
requests不会引发异常,如果状态不是200”。你需要(whatever).raise_for_status()。