Django: как обслуживать пользовательские изображения и эскизы с разных серверов?
Для моего сайта Django я бы хотел:
- Принимать изображения, отправленные пользователями
- Создать миниатюры из этих изображений
- Поместите как исходные изображения, так и миниатюры на отдельные серверы, предназначенные для обслуживания изображений.
Мне нужно несколько отдельных серверов для обслуживания изображений / миниатюр, чтобы обеспечить достаточную производительность ввода-вывода.
Каков наилучший способ построения системы обслуживания распределенных образов, подобной этой? Любое программное обеспечение с открытым исходным кодом, которое поможет?
Благодарю.
1 ответ
Это звучит как работа для распределенных очередей задач. Мой личный фаворит - Beanstalkd B / C, он настолько легкий и простой в использовании.
Сервер: https://github.com/kr/beanstalkd
Клиентская библиотека: https://github.com/PeterScott/beanstalkc
Помощник Джанго: https://github.com/jonasvp/django-beanstalkd
Это будет работать так:
1. Файл загружается и хранится локально
2. Работа создается в виде загрузки и помещается в трубочный боб
3. Бобовые стебли наблюдают за трубками для работы, они берут новую работу
4. Работник может создавать эскизы и распространять их на столько серверов, сколько вам нужно
Прелесть в том, что у вас может быть столько рабочих, которые питаются из трубки, сколько требуется. Так что, если вы когда-нибудь отстанете, просто уволите больше рабочих. Рабочие могут находиться на одной машине или на нескольких отдельных машинах, и все это будет работать нормально.