このコードを使用して、myfile.txt を Windows マシンから ftp サーバーにアップロードしています。アップロード後、スクリプトはローカル マシン上のファイルを削除します (ftp では削除しません)。
try:
ftp = FTP(ftp.host.com)
ftp.login(your_username, your_password)
file = open(myfile.txt, "rb")
ftp.storbinary('STOR myfile.txt', file)
print 'STORing File now...'
ftp.quit()
file.close()
subprocess.Popen('del myfile.txt', shell=True)
print 'File deleted'
except all_errors:
print 'An error occured'
このコードは実行されますが、信頼できません! 〜 10 回のアップロードごとに、ファイルの保存中にスクリプトがハングします。
print 'STORing File now...' # So I just get 'STORING File now...'
ファイルは大きくなく、数秒以内にアップロードする必要がありますが、多くの場合、1、2 時間待たなければならず、その後で例外がスローされます。
print 'An error occured'
例外が「以前に」スローされた場合は、アップロードを再開するだけでよいので (たとえば、while ループで)。このファイルをできるだけ早くアップロードする必要があるため、ファイルのアップロードを高速化する必要があります (例外がスローされるのをそれほど長く待ちたくありません)。
2 番目の問題: ファイルが正常にアップロードされた後、「他のプロセスが既にアクセスしている」ため、スクリプトはローカル マシン上のファイルの削除に失敗します <- ftplib がファイルを「解放」しなかったと思います。これを防ぐにはどうすればよいですか?
より優れた/信頼性の高いシンプルなファイルアップロードソリューションを探しています。誰にもアイデアがありますか?ありがとう!