我写了一些代码来登录AS / 400 FTP站点,移动到某个目录,找到我需要下载的文件。它可以工作,但似乎我收到了很多文件要下载:
socket.error: [Errno 10054] An existing connection was
forcibly closed by the remote host
我登录并成功导航到相应的目录:
try:
newSession = ftplib.FTP(URL,username,password)
newSession.set_debuglevel(3)
newSession.cwd("SOME DIRECTORY")
except ftplib.all_errors, e:
print str(e).split(None,1)
sys.exit(0)
我抓住了我需要的文件列表:
filesToDownload= filter(lambda x: "SOME_FILE_PREFIX" in x, newSession.nlst())
这就是死亡的地方(特别是newSession.retrbinary('RETR '+f,tempFileVar.write)
):
for f in filesToDownload:
newLocalFileName = f + ".edi"
newLocalFilePath = os.path.join(directory,newLocalFileName)
tempFileVar = open(newLocalFilePath,'wb')
newSession.retrbinary('RETR '+f,tempFileVar.write)
tempFileVar.close()
在我使用Errno 10054
命中之前,它下载了超过85%的文件,我想我很困惑为什么它在接近完成时似乎任意死亡。我现在的诚实猜测是,在尝试提取这些文件时,对FTP的请求太多了。
以下是我在命令提示符下显示的错误的屏幕截图:
任何建议或指示都会很棒。我还在尝试解决这个问题。
答案 0 :(得分:0)
我认为没有真正的答案,看起来客户端的FTP在这里是错误的,它非常不稳定。我能做的最好的工作就是抓住抛出的套接字错误,并在强行断开之前恢复我在上一次会话中停止的地方。客户的IT团队最终正在调查问题。
叹息。