2017-05-16 1 views
1

S3에서 장기 실행 작업의 결과를 저장하려고합니다. 작업이 파이썬으로 구현 되었기 때문에 boto3을 사용하고 있습니다. user guideS3.Client.upload_fileobj을 사용하여 업로드가 성공했는지 확인하는 방법을 알 수 없다는 점을 제외하면 잘 작동합니다. 설명서에 따르면이 메서드는 아무 것도 반환하지 않으며 오류를 발생시키지 않습니다. Callback 매개 변수는 오류 검사 대신 진행 추적을위한 것으로 보입니다. 메서드 호출이 동기식인지 비동기식인지도 명확하지 않습니다.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 업로드 작업이 결국 일관성이 있습니다. 그래서, 당신은 응답을 얻었을 것입니다. = None 이후에 작업이 성공하거나 실패 할 수 있기 때문에 비동기로 간주 될 수 있습니다. – tom

+0

글자 수 한도로 인해 서식을 수정하기 위해 편집을 편집 할 수 없습니다. –

관련 문제