2

我编写了一些代码来登录到一个 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()

它在我被击中之前下载了我需要的文件的 85% 以上,Errno 10054我想我只是对为什么它在如此接近完成时似乎任意死亡感到困惑。我现在诚实的猜测是尝试提取这些文件时对 FTP 的请求太多。

这是出现在我的命令提示符上的错误截图:

在此处输入图像描述

任何建议或指示都会很棒。我仍在尝试解决此问题。

4

1 回答 1

0

我想这个问题没有真正的答案,似乎客户端的 FTP 有问题,它非常不稳定。我能做的最好的事情是围绕捕获抛出的套接字错误并在被强制断开之前恢复我在上一个会话中中断的地方进行处理。客户的 IT 团队最终正在调查他们的问题。

叹。

于 2013-04-09T18:48:38.177 回答