[英]python requests.get gets stuck
我正在制作一个 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 秒
但有时当我回到我的电脑时,我发现它什么都不做,任何想法为什么它会卡住,难道它不应该继续发出请求直到它像浏览器那样得到响应?
正如 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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.