Django + S3 (boto) + Sorl Thumbnail: Предложения по оптимизации - PullRequest
13 голосов
/ 06 апреля 2011

Я использую серверную часть хранилища S3 на разрабатываемом сайте Django, чтобы снизить нагрузку на сервер (ы) EC2 и разрешить нескольким веб-серверам (избыточность, балансировка нагрузки) доступ к одному и тому же набору загруженных носителей.

Теги шаблона Sorl.thumbnail (v11) используются в наших шаблонах для обеспечения гибкого изменения размера / обрезки изображения.

Производительность на мультимедийных страницах не очень хорошая, а также когда требуется страница, содержащая эскизы.при первом обращении к генерации запросы даже превышают время ожидания.

Я понимаю, что это связано с проверкой эскизов / загрузкой исходного изображения из S3 (которое может быть довольно большим и с высоким разрешением),и рендеринг / проверка / загрузка миниатюры.

Что бы вы посоветовали, это лучшее решение для этой настройки?

Я видел предложения по хранению локальной копии файлов в дополнение к копии S3(не очень хорошо, когда несколько серверов используются для балансировки нагрузки).Также я видел, что было предложено хранить 0-байтовые файлы для дурака sorl.thumbnail.

Есть ли другие предложения или более эффективные способы решения этой проблемы?

Ответы [ 4 ]

7 голосов
/ 07 апреля 2011

sorl thumbnail теперь создается с учетом медленных удаленных хранилищ. Однако первое создание миниатюры выполняется с помощью запроса к хранилищу, например, сначала доступ к нему осуществляется из шаблона, но после этого ссылки кэшируются в хранилище значений ключей. Тем не менее, вам нужен первый запрос и создание, но одним из решений является использование низкоуровневого api sorl.thumbnail.get_thumbnail с теми же параметрами при загрузке изображения. Когда изображение загружено, добавьте это задание по созданию эскизов в очередь, например, сельдерей.

3 голосов
/ 26 мая 2013

Вы можете использовать Sorlery . Он сочетает в себе щавель и сельдерей для создания эскизов с помощью рабочих. Очень осторожно, чтобы не получить доступ к файловой системе вне рабочего потока.

Миниатюра, возвращаемая немедленно (до того, как работник получил возможность), может контролироваться установкой THUMBNAIL_DUMMY_SOURCE для соответствующего заполнителя.

Задание создается при первом запросе эскиза, последующие запросы обслуживаются фиктивным изображением до завершения рабочего потока.

1 голос
/ 04 апреля 2015

Самое простое решение, которое я нашел до сих пор, на самом деле это сторонний сервис: http://cloudinary.com/

1 голос
/ 08 июля 2013

Почти так же, как решение @ Aidan, я сделал несколько настроек для sorl-thumbnail.Я также предварительно генерирую миниатюры с сельдереем.Мой код здесь sorl_thumbnail-async

Но я узнал, что easy_thumbnails делает именно то, что я пытался сделать, поэтому я использую его в своем текущем проекте.Возможно, вам пригодится короткий пост по теме здесь

...