簡體   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