在當前在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