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