我有一个调用子进程的脚本(speedtest-cli)。
该脚本似乎随机失败,并显示以下错误消息: -
ERROR: timed out
ERROR: 'speedtest-cli --share' failed (exit code 1).
Retrieving speedtest.net configuration... Cannot retrieve speedtest configuration
Traceback (most recent call last):
File "/home/steve/speedtest_dev.py", line 80, in <module>
data[1] = data[1].strip("'") ##Finish date and time
IndexError: list index out of range
据我所知,这里看起来有两个错误: -
a)Speedtest-cli因超时而失败
ERROR: timed out
ERROR: 'speedtest-cli --share' failed (exit code 1).
和
b)数据条然后失败,因为没有数据。
Traceback (most recent call last):
File "/home/steve/speedtest_dev.py", line 80, in <module>
data[1] = data[1].strip("'") ##Finish date and time
IndexError: list index out of range
我想在可能的情况下捕获第一个错误并在一段时间(60秒?)后重新运行子进程。
我尝试过创建一个函数: -
def run_speedtest():
outfile = open(dataFile, "w+")
subprocess.call(["/home/steve/speedtest-cli-extras/speedtest-csv", "--share"], stdout=outfile)
outfile.close()
然后使用try语句,如: -
try:
run_speedtest()
except:
print("1st attempt failed") #for testing only
time.sleep(60)
run_speedtest()
出于某种原因,我只设法运行第一部分,当出现错误时,似乎没有运行。然后脚本执行此操作: -
#Separate Values from csv string
with open(dataFile, "r+") as f:
data = f.read()
data = data.strip()
data = data.replace("\t","|")
f.seek(0)
f.write(data)
f.truncate
f.close()
#Open file and process
with open(dataFile, "r") as g:
data = g.read()
data = data.split("|")
写入数据库并在其中一个参数小于定义值时发送电子邮件。
除非最初的run_speedtest()失败,否则一切正常。
任何帮助都将不胜感激。
答案 0 :(得分:0)
升级最新的python版本后,我遇到了同样的问题,解决方案可以是:
导出PYTHONHTTPSVERIFY = 0
python your_script
虽然对我有用。