В моем приложении Django, запущенном в настоящее время на Heroku, я заметил, что получение url из ImageFields ведется всегда на хостинге на s3. Приложение написано с использованием Django Rest Framework. Когда я пытаюсь получить список объектов, у которых есть поля изображений, ответ настолько медленный. Heroku выдает ошибку тайм-аута. Я предполагаю, что это потому, что boto должен получить URL-адрес от s3 для каждого отдельного ImageField по каждому запросу. Как ускорить процесс для предотвращения этих ошибок таймаута?Django ImageField url медленный при использовании Amazon s3
ответ
Вы можете создать новое поле в своих моделях, например image_url
.
class YourModel(...):
image_url = models.CharField(...)
# other fields
Когда изображение загружается/сохранен в первый раз, получить его URL и заполнить image_url
поля с этим значением. Однако вам нужно будет сохранить свою модель.
Вы можете использовать это значение позже, когда это необходимо.
Demerits
Это может привести к ненужному доступу к БД. Если, однако, вы используете Memcached или что-то подобное для кэширования базы данных, я бы не стал беспокоиться.
Одно из решений было предоставлено xyers выше. Вот другое возможное решение, которое я использовал для своего проекта. Вы можете определить переменную MEDIA_URL в файле settings.py вашего проекта Джанго:
MEDIA_URL = 'https://%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME
Затем вы можете использовать эту переменную, когда вам нужно получить доступ к URL-адресу. Например, если у вас есть модель:
class MyModel(...):
image = FileField(...)
Тогда вы можете получить URL этого файла следующим образом:
mymodel = MyModel.objects.get(...)
image_url = os.path.join(settings.MEDIA_URL, mymodel.image.name)
- 1. Скрытие URL-адресов amazon при использовании S3, Rails и Paperclip
- 2. Amazon S3 URL Rewrite
- 3. Amazon S3 Кодировка URL
- 4. Django ImageField upload from URL
- 5. Несоответствие подписи при использовании подписанных URL S3
- 6. Cyberduck CLI Amazon S3 URL
- 7. Django imageField
- 8. Как получить 304 изображений, хранящихся на amazon s3 при использовании django-хранилищ в приложении django?
- 9. Django статические файлы относительные ссылки Amazon S3
- 10. Amazon S3 недействительная дата при использовании истекает через url_for
- 11. RequireJS на Amazon S3 использует неправильный URL
- 12. Django Rest Framework ImageField
- 13. Django: Изменение URL-адреса необязательного ImageField
- 14. Django Imagefield url не содержит MEDIA_ROOT
- 15. Django link imageField для внешнего url
- 16. Удалить файл в Amazon S3 с помощью Django-хранилищ
- 17. Django меняет имя изображений перед загрузкой в Amazon S3 ведра
- 18. Настроить ImageField url/path
- 19. Amazon S3 hardcode my bucket URL
- 20. Добавление результатов ImageField в Django при ошибках
- 21. Необязательный ImageField (Django)
- 22. Django ImageField upload_to path
- 23. Почему Django не сериализует FileField в URL-адрес файла при использовании AWS S3
- 24. Amazon s3 разъем: IllegalArgumentException: Пустой ключ при использовании getAuthorization
- 25. Amazon S3 Отчеты об использовании по запросу
- 26. Ищете информацию об использовании на Amazon S3
- 27. Django ImageField validation & PIL
- 28. django-хранилища и amazon s3 - подозрительная операция
- 29. Загрузить статические файлы Django в Amazon S3
- 30. Django с Amazon S3 через boto3: Неправильноконфигурированный
решить мою проблему. благодаря – matteok