【问题标题】:Python request stacksPython 请求堆栈
【发布时间】: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()。

标签: python json request


【解决方案1】:

只需添加timeout即可获取请求

【讨论】:

  • 您能否添加更多细节以使您的答案更有用。
猜你喜欢
  • 2016-01-29
  • 2016-08-31
  • 2016-05-27
  • 2015-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多