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 に答える