2017-05-16 35 views
1

長時間実行しているジョブの結果をS3に保存します。仕事はPythonで実装されているので、私はboto3を使っています。 user guideS3.Client.upload_fileobjをうまく使っていますが、アップロードが成功したかどうかを確認する方法がわかりません。ドキュメントによれば、このメソッドは何も返さず、エラーを発生させません。 Callback paramは、エラーチェックの代わりに進行状況の追跡を目的としているようです。また、メソッド呼び出しが同期または非同期であるかどうかは不明です。boto3 S3.Client.upload_fileobjが成功したかどうかを確認する方法?

アップロードが何らかの理由で失敗した場合は、内容をディスクに保存してエラーを記録します。だから私の質問です:boto3 S3.Client.upload_fileobj呼び出しが成功したかどうかを確認し、失敗した場合は何らかのエラー処理を行いますか?

+1

AWSによると、キーオブジェクトが失敗し、ファイルのアップロード時に作成されることはありません(たとえば、部分的なファイルを使用して投票を行い、したがって、次のOperations(操作)

try: response = upload_fileobj() except Exception as e: save the contents to the disk and log an error. if response is None: polling after every 10s to check if the file uploaded successfully or not using **head_object()** function.. If you got the success response from head_object : break If you got error in accessing the object: save the contents to the disk and log an error. 

を実行するために、あなたをお勧めします、切断)。ファイルの完全性を保障しない場合は、遅れての検証(ダウンロード確認の目的でも)のために、ファイルハッシュ(例:md5、sha1、sha256)をS3オブジェクトメタに送信する必要があります。 – mootmoot

答えて

1

私は基本的にhead_object()

+0

あなたの答えをありがとう! 'upload_filobj'が非同期であると確信していますか? –

+1

s3アップロード操作は最終的に一貫しています。それで、それが成功するか失敗するかもしれないという後の操作の間、あなたはresponse = Noneを得るでしょう。それゆえ、それは非同期と考えることができます。 – tom

+0

私の編集を編集して、文字制限による書式設定を修正することはできません –

関連する問題