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 への要求が多すぎると思います。
コマンドプロンプトに表示されるエラーのスクリーンショットを次に示します。
どんなアドバイスや指針も素晴らしいでしょう。私はまだこれをトラブルシューティングしようとしています。