如果出现此特定错误,我该如何重试?
How can i just retry if if I get this specific error?
如果我的脚本运行时间足够长,我会收到此特定错误:
*KeyError: 'data'
在处理上述异常的过程中,又出现了一个异常:
追溯(最近一次通话):
...第 61 行,在
...程序中的第 49 行
zeit = get_nanopool_time_to_next_epoch()
...第 33 行,
在 get_nanopool_time_to_next_epochwebseite['data']
我需要获取此 [“数据”]。如果请求失败,我该如何实现,它应该一次又一次地尝试,直到它工作。
感谢您的帮助!
import requests
import time
import os
def get_nanopool_time_to_next_epoch():
while True:
url=f"https://api.nanopool.org/v1/eth/network/timetonextepoch"
resp = requests.get(url)
webseite = requests.get(url).json()
while resp.status_code >= 300:
try:
webseite['data']
print("--------------------------------------------")
print("Http Fehler", resp.status_code)
#print(resp.content)
except:
time.sleep(30)
webseite['data']
print("--------------------------------------------")
print("Http Fehler", resp.status_code)
#print(resp.content)
#webseite = requests.get(url).json()
while 'data' not in webseite:
try:
time.sleep(50)
webseite['data']
except:
#continue
while 'data' not in webseite:
time.sleep(30)
webseite['data']
if ["data"]==[]:
time.sleep(30)
print("--------------------------------------------")
print("'data' nicht im Dictionary")
return webseite['data']
else:
return webseite['data']
#time.sleep(30)
def programm():
while True:
zeit = get_nanopool_time_to_next_epoch()
puffer=int(420)
while zeit > puffer:
zeit = get_nanopool_time_to_next_epoch()
puffer=int (420)
print("Zeit zum DAG-Wechsel in Sekunden:",zeit)
time.sleep(30) #Refresh Zeit
while zeit < puffer:
print("Neustart in",int(zeit)) # Zeit zur nächsten DAG Epoche in Sekunden
os.startfile("C:/Users/Simon/Desktop/Minerrrestart1.bat")
print("restart")
time.sleep(10000)
break
break
while True:
programm()
break
您可以使用 try
和 except
语句以及 while True
循环来完成此操作。:
while True:
try:
zeit = get_nanopool_time_to_next_epoch()
except KeyError:
continue
break
在这里,zeit = get_nanopool_time_to_next_epoch()
将继续 运行,直到它不会导致 KeyError
。
如果您想在再次尝试 运行 命令之前等待一段时间,也可以使用 time.sleep()
添加延迟。
完整函数为:
def programm():
while True:
while True:
try:
zeit = get_nanopool_time_to_next_epoch()
except KeyError:
continue
break
puffer=int(420)
while zeit > puffer:
while True:
try:
zeit = get_nanopool_time_to_next_epoch()
except KeyError:
continue
break
puffer=int (420)
print("Zeit zum DAG-Wechsel in Sekunden:",zeit)
time.sleep(30) #Refresh Zeit
while zeit < puffer:
print("Neustart in",int(zeit)) # Zeit zur nächsten DAG Epoche in Sekunden
os.startfile("C:/Users/Simon/Desktop/Minerrrestart1.bat")
print("restart")
time.sleep(10000)
break
break
如果您特定于请求库,比如您想继续尝试直到它给您 200,以下方法可能会奏效。
- 为您的代码设置最大重试次数
from requests.adapters import HTTPAdapter
conn = requests.Session()
conn.mount(URL, HTTPAdapter(max_retries=max_retries))
或者您可以将其实现为无限次尝试:
while (resp.status_code!=200):
url=f"https://api.nanopool.org/v1/eth/network/timetonextepoch"
resp = requests.get(url)
webseite = requests.get(url).json()
#blah blah
如果我的脚本运行时间足够长,我会收到此特定错误:
*KeyError: 'data' 在处理上述异常的过程中,又出现了一个异常: 追溯(最近一次通话): ...第 61 行,在
...程序中的第 49 行
zeit = get_nanopool_time_to_next_epoch()
...第 33 行, 在 get_nanopool_time_to_next_epochwebseite['data']
我需要获取此 [“数据”]。如果请求失败,我该如何实现,它应该一次又一次地尝试,直到它工作。 感谢您的帮助!
import requests
import time
import os
def get_nanopool_time_to_next_epoch():
while True:
url=f"https://api.nanopool.org/v1/eth/network/timetonextepoch"
resp = requests.get(url)
webseite = requests.get(url).json()
while resp.status_code >= 300:
try:
webseite['data']
print("--------------------------------------------")
print("Http Fehler", resp.status_code)
#print(resp.content)
except:
time.sleep(30)
webseite['data']
print("--------------------------------------------")
print("Http Fehler", resp.status_code)
#print(resp.content)
#webseite = requests.get(url).json()
while 'data' not in webseite:
try:
time.sleep(50)
webseite['data']
except:
#continue
while 'data' not in webseite:
time.sleep(30)
webseite['data']
if ["data"]==[]:
time.sleep(30)
print("--------------------------------------------")
print("'data' nicht im Dictionary")
return webseite['data']
else:
return webseite['data']
#time.sleep(30)
def programm():
while True:
zeit = get_nanopool_time_to_next_epoch()
puffer=int(420)
while zeit > puffer:
zeit = get_nanopool_time_to_next_epoch()
puffer=int (420)
print("Zeit zum DAG-Wechsel in Sekunden:",zeit)
time.sleep(30) #Refresh Zeit
while zeit < puffer:
print("Neustart in",int(zeit)) # Zeit zur nächsten DAG Epoche in Sekunden
os.startfile("C:/Users/Simon/Desktop/Minerrrestart1.bat")
print("restart")
time.sleep(10000)
break
break
while True:
programm()
break
您可以使用 try
和 except
语句以及 while True
循环来完成此操作。:
while True:
try:
zeit = get_nanopool_time_to_next_epoch()
except KeyError:
continue
break
在这里,zeit = get_nanopool_time_to_next_epoch()
将继续 运行,直到它不会导致 KeyError
。
如果您想在再次尝试 运行 命令之前等待一段时间,也可以使用 time.sleep()
添加延迟。
完整函数为:
def programm():
while True:
while True:
try:
zeit = get_nanopool_time_to_next_epoch()
except KeyError:
continue
break
puffer=int(420)
while zeit > puffer:
while True:
try:
zeit = get_nanopool_time_to_next_epoch()
except KeyError:
continue
break
puffer=int (420)
print("Zeit zum DAG-Wechsel in Sekunden:",zeit)
time.sleep(30) #Refresh Zeit
while zeit < puffer:
print("Neustart in",int(zeit)) # Zeit zur nächsten DAG Epoche in Sekunden
os.startfile("C:/Users/Simon/Desktop/Minerrrestart1.bat")
print("restart")
time.sleep(10000)
break
break
如果您特定于请求库,比如您想继续尝试直到它给您 200,以下方法可能会奏效。
- 为您的代码设置最大重试次数
from requests.adapters import HTTPAdapter
conn = requests.Session()
conn.mount(URL, HTTPAdapter(max_retries=max_retries))
或者您可以将其实现为无限次尝试:
while (resp.status_code!=200):
url=f"https://api.nanopool.org/v1/eth/network/timetonextepoch"
resp = requests.get(url)
webseite = requests.get(url).json()
#blah blah