我正在制作一个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秒
但有时候当我回到我的电脑时,我发现它什么都不做,任何想法为什么会卡住,是不是应该继续发出请求,直到得到像浏览器那样的响应?
答案 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)