在当前在Heroku上运行的Django应用程序中,我注意到在s3上托管时,从ImageFields检索url需要花费很长时间。 该应用程序使用Django Rest Framework编写。当我尝试检索具有图像字段的对象列表时,响应太慢Heroku会引发超时错误。我认为这是因为boto在每次请求时必须从s3中为每个单独的ImageField检索url。 如何加速进程以防止这些超时错误?Django ImageField网址使用亚马逊s3时速度较慢
1
A
回答
1
您可以在模型中创建一个新字段,例如image_url
。
class YourModel(...):
image_url = models.CharField(...)
# other fields
当图像上传/保存在第一时间,检索其URL和填充image_url
字段此值。不过,您需要再次保存模型。
您可以稍后在需要时使用此值。
记过
这可能导致不必要的数据库查找。但是,如果你使用Memcached或类似的东西来缓存数据库,我不会担心。
0
解决方案之一由xyers提供。这是我用于我的项目的其他可能的解决方案。 你可以在你的Django项目settings.py文件定义MEDIA_URL变量:
MEDIA_URL = 'https://%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME
然后,当你需要访问的网址,你可以使用这个变量。例如,如果您有模型:
class MyModel(...):
image = FileField(...)
然后你就可以得到该文件的网址如下:
mymodel = MyModel.objects.get(...)
image_url = os.path.join(settings.MEDIA_URL, mymodel.image.name)
相关问题
- 1. PHP亚马逊S3上传速度
- 2. 亚马逊S3防止网址
- 3. 如何保护亚马逊S3网址
- 4. 无法使用亚马逊路由指向亚马逊S3网址53
- 5. 使用S3,Rails和Paperclip隐藏亚马逊网址
- 6. S3亚马逊域
- 7. FileNotFoundException亚马逊S3
- 8. 亚马逊S3传输加速不会提高上传速度
- 9. AmazonEc2InstanceDataPropertySource.getProperty()在亚马逊外运行时速度极其缓慢
- 10. 亚马逊S3在生产中的django
- 11. 亚马逊s3 ios下载进度条
- 12. C#亚马逊S3上传与进度
- 13. 亚马逊WAF +亚马逊API网关
- 14. 亚马逊网络服务S3和EC2
- 15. 亚马逊S3保护静态网站
- 16. S3亚马逊网络服务许可
- 17. S3亚马逊静态网站与React?
- 18. 使用php加密url亚马逊s3
- 19. 使用亚马逊Ec2与S3
- 20. 使用C中的亚马逊S3 API
- 21. 使用PHP上传到亚马逊S3
- 22. 适当的亚马逊AWS S3使用
- 23. 离线亚马逊S3
- 24. Android的亚马逊S3 TransferUtility
- 25. 从亚马逊S3删除
- 26. 亚马逊S3虾PDF
- 27. 亚马逊S3 S3fox问题
- 28. Carrierwave - 配置亚马逊S3
- 29. 如何从亚马逊S3
- 30. 亚马逊S3加密
解决我的问题。谢谢 – matteok