django - 在 s3 存储桶中上传图像需要太长时间
问题描述
我必须在我的 django 项目的 s3 存储桶中上传图像。我正在使用 boto3 来执行以下操作:
def handle_uploaded_file(file, filename):
s3 = boto3.resource('s3', aws_access_key_id=ACCESS_KEY,aws_secret_access_key=SECRET_KEY)
check = s3.Bucket(bucket).put_object(Key=filename, Body=file,ContentType='image/png',ACL='public-read')
return check
我在我的 API 中调用这个函数,如下所示:
if request.FILES and request.FILES.get('tagimage', None) is not None:
tagimage = request.FILES['tagimage']
tagimage_name = tagimage.name
number = number_genarator()
tagimage_name = str(number) + tagimage_name
tag_upload = handle_uploaded_file(tagimage,tagimage_name)
res['tagimage']=tag_upload
record.tagimage = tagimage_name
但是在我看来,这个过程需要的时间太长了。要上传一张图片,我需要三秒钟,除非我的 API 的其他部分需要时间。有人可以建议一种更快的上传图片的方法吗?
解决方案
原来问题是由于我为我的存储桶选择的区域。一旦我将存储桶区域更改为更靠近我的物理位置,API 响应时间逐渐减少到不到 1 秒。这是我第一次使用 AWS 服务,相信有了这些经验,我会更好地了解它们!
推荐阅读
- css - css气泡聊天上滑动画
- python - 在 python 中是否有解析和下载 *.http 文件的方法?
- javascript - Laravel 未捕获类型错误(无法设置 # 的属性元素
它只有一个吸气剂) - python - python中的联合平均实现
- docker - 新创建的容器内的 Git 克隆 - known_hosts 的问题
- php - 结果显示未经验证
- powershell - 尝试在heroku 上部署strapi 时出错。grep 和 cut 不识别
- javascript - 在 React 中渲染具有不同状态的组件数组
- java - 使用 Java 从 YAML 文件中获取值
- python - 并非所有变量都显示在 jupyter notebook 的条形图中