Django-imagekit, который я использую для обработки загруженных пользователем изображений на веб-сайте социальных сетей, использует неприемлемо высокий уровень памяти. Я ищу идеи о том, как обойти эту проблему.Использование памяти в django-imagekit неприемлемо - идеи по исправлениям?
Мы используем django-imagekit для копирования загруженных пользователем изображений в три предопределенных размера и сохраняем четыре копии (3 обработанных плюс 1 оригинал) в нашем ковше AmazonS3.
Эта операция быстро заставляет нас преодолевать пределы памяти на наших процессорах Heroku. На странице django-imagekit github я видел несколько предложений по взлому библиотеки, чтобы использовать меньше памяти.
Я вижу три варианта:
- Пытаться взломать Джанго-imagekit, и дело с вытекающими отсюда проблемами обновления с использованием модифицированной библиотеки третьей стороны
- использовать другую библиотеку обработки изображений
- ли что-то разные целиком - возможно ли изменить размер изображений в браузере? Или использовать стороннюю услугу? Или...?
Я ищу совет, на каком из этих маршрутов взять. В частности, если вы знакомы с django-imagekit или знаете/используете другую библиотеку обработки изображений в приложении Django, я бы хотел услышать ваши мысли.
Большое спасибо!
Клей
Попробуйте изменить размер изображения с помощью PIL с консоли и посмотреть, хорошо ли используется память. Изменение размера изображения - простая задача, я не думаю, что вы должны использовать сторонние приложения. Кроме того, разделите задачу на 3 задачи (3 изображения?). –
FWIW, django-imagekit использует git для управления версиями, поэтому вы можете просто разблокировать репо, внести изменения в вилку и вытащить из официального репо при каждом обновлении. Вероятно, вам все равно придется объединить несколько конфликтов здесь и там, но это упрощает процесс синхронизации ваших изменений с официальными изменениями. –
@ AlexanderA.Sosnovskiy - Я использовал PIL, и использование памяти улучшилось. Если вы опубликуете свой комментарий в качестве ответа, я могу его принять. –