如何判断使用boto3向S3存储桶的文件上传已完成?
解决方案
boto3的Object.put()方法是同步阻塞的——它会一直等到上传操作完成(成功或失败)才会返回。所以只要这个方法执行完毕且没有抛出异常,就代表上传已经完成,你直接在它后面加打印语句就生效,就像你代码里写的那样。
如果想更严谨地确认上传成功,可以检查返回结果里的HTTP状态码:
import boto3 s3 = boto3.resource('s3') # 用with语句自动管理文件资源,避免忘记关闭 with open(imagePath, 'rb') as file: obj = s3.Object('s3BucketName', fileName) ret = obj.put(Body=file, Metadata={'example': 'test'}) # 检查响应状态码是否为200(成功) if ret['ResponseMetadata']['HTTPStatusCode'] == 200: print('upload complete')
另外,如果你处理大文件用到分片上传,比如用upload_file方法,这些方法同样是同步执行的,方法执行完毕就代表上传流程完成。
内容的提问来源于stack exchange,提问作者seriously
相关产品推荐
相关产品推荐

