繁体   English   中英

python requests.get 卡住了

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM