套接字关闭的Python SFTP问题-远程主机(10054)强制关闭了现有连接-如何继续?打破了这一进程,
因此,我有一个将一系列目录和文件sunbmit到服务的过程。该服务处理这些文件,然后将目录和输出文件返回到不同的目录中 例如,将有一个运行名为的父目录,然后是我们正在处理的每个日期的子目录。。i、 e: 输入 该服务在output下为运行名创建一个等效目录,然后在处理数据时创建相同的目录,因此,当它处理第一个文件时,如下所示: 输出套接字关闭的Python SFTP问题-远程主机(10054)强制关闭了现有连接-如何继续?打破了这一进程,,python,paramiko,pysftp,Python,Paramiko,Pysftp,因此,我有一个将一系列目录和文件sunbmit到服务的过程。该服务处理这些文件,然后将目录和输出文件返回到不同的目录中 例如,将有一个运行名为的父目录,然后是我们正在处理的每个日期的子目录。。i、 e: 输入 该服务在output下为运行名创建一个等效目录,然后在处理数据时创建相同的目录,因此,当它处理第一个文件时,如下所示: 输出 RunName 2020-06-01 当服务处理完所有文件后,它会在目录中放入一个包含所有日期的“完成”文件。一旦收到donefil
RunName
2020-06-01
当服务处理完所有文件后,它会在目录中放入一个包含所有日期的“完成”文件。一旦收到donefile,我的程序就可以进入下一个处理阶段
我想做的是确定完成处理的百分比,然后确定完成的时间
下面的代码完美无瑕,除了一件事
我经常
错误:paramiko.transport:套接字异常:远程主机(10054)强制关闭了现有连接
指向第二行(以“While”开头)
我需要做哪些更改来强制重新连接,然后在发生此错误时重试,并让while循环继续其“metty”方式
任何帮助都将不胜感激。。这让我很痛苦,因为它会中断一个更大的过程,并导致积压
srv = pysftp.Connection(host=servername, username=user,password=pwd,cnopts=cnopts)
while srv.isfile(donefile)==False:
try:
srv = pysftp.Connection(host=servername, username=user,password=pwd,cnopts=cnopts)
dirnames=[]
for i in srv.listdir(outputdir):
if i[:6]=="date=2":
dirnames.append(i)
srv.close()
if max(dirnames)!=lastname:
print("Last Directory is: " ,max(dirnames), "out of", max(dirnamesin), " ",round((len(dirnames)/len(dirnamesin))*100), "pct done", datetime.datetime.now(), "run: ",run_name)
lastname=max(dirnames)
time.sleep(30)
srv = pysftp.Connection(host=servername, username=user,password=pwd,cnopts=cnopts)
except:
print("connection error - will try again in 30 seconds")
time.sleep(30)
srv = pysftp.Connection(host=servername, username=user,password=pwd,cnopts=cnopts)
print ('done')
我会尝试重构它,以确保连接正确关闭,比如
while True:
try:
with pysftp.Connection(host=servername, username=user,password=pwd,cnopts=cnopts) as srv:
if srv.isfile(donefile):
break
dirnames=[]
for i in srv.listdir(outputdir):
if i[:6]=="date=2":
dirnames.append(i)
if max(dirnames)!=lastname:
print("Last Directory is: " ,max(dirnames), "out of", max(dirnamesin), " ",round((len(dirnames)/len(dirnamesin))*100), "pct done", datetime.datetime.now(), "run: ",run_name)
lastname=max(dirnames)
except Exception:
print("connection error - will try again in 30 seconds")
time.sleep(30)
print('done')
while True:
try:
with pysftp.Connection(host=servername, username=user,password=pwd,cnopts=cnopts) as srv:
if srv.isfile(donefile):
break
dirnames=[]
for i in srv.listdir(outputdir):
if i[:6]=="date=2":
dirnames.append(i)
if max(dirnames)!=lastname:
print("Last Directory is: " ,max(dirnames), "out of", max(dirnamesin), " ",round((len(dirnames)/len(dirnamesin))*100), "pct done", datetime.datetime.now(), "run: ",run_name)
lastname=max(dirnames)
except Exception:
print("connection error - will try again in 30 seconds")
time.sleep(30)
print('done')