如果我得到这个特定的错误,我怎么能重试?



如果我的脚本运行足够长,我会得到这个特定的错误:

*KeyError:"数据">在处理上述异常期间,发生了另一个异常:回溯(最近一次调用):...

第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

您可以使用tryexcept语句以及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

或者您可以使用urllib3及其重试实用程序来获得更强的健壮性。

相关内容

  • 没有找到相关文章

最新更新