python requests.get卡住了

时间:2018-04-08 19:09:03

标签: python python-requests

我正在制作一个python,每隔2秒从局域网中的一个简单服务器读取温度,问题是有时脚本卡住而没有做任何事情,我在Windows上使用python 3.6的请求

import requests
import time

while True:
    s=time.time()

    r = requests.get("http://192.168.1.2/readtemp.php?id=1&action=read")
    temp = r.text
    print (temp + ' - ' + str(time.time()-s) + ' Seconds')
    time.sleep(2)

我得到的回应是:

29°C - 0.272745847702026秒

29°C - 0.64812617301941秒

29°C - 0.294319868087769秒

但有时候当我回到我的电脑时,我发现它什么都不做,任何想法为什么会卡住,是不是应该继续发出请求,直到得到像浏览器那样的响应?

1 个答案:

答案 0 :(得分:1)

正如Tobias所写,默认情况下,请求不会重试,也不会超时,因为使用超时会告知您潜在的问题(最可能是我的观点)。要么捕获异常,然后再重试,要么可以使用重试适配器的更高级的路由。

尝试此请求并进行超时和错误处理:

import requests
import time

while True:
    s=time.time()

    try: 
        r = requests.get("http://192.168.1.2/readtemp.php?id=1&action=read", timeout=10)
    except requests.exceptions.Timeout as err: 
        print(err)
        # sleep some sec/min and retry here!

    temp = r.text
    print (temp + ' - ' + str(time.time()-s) + ' Seconds')

    time.sleep(2)
相关问题