Django: как обслуживать пользовательские изображения и эскизы с разных серверов?

Для моего сайта Django я бы хотел:

  1. Принимать изображения, отправленные пользователями
  2. Создать миниатюры из этих изображений
  3. Поместите как исходные изображения, так и миниатюры на отдельные серверы, предназначенные для обслуживания изображений.

Мне нужно несколько отдельных серверов для обслуживания изображений / миниатюр, чтобы обеспечить достаточную производительность ввода-вывода.

Каков наилучший способ построения системы обслуживания распределенных образов, подобной этой? Любое программное обеспечение с открытым исходным кодом, которое поможет?

Благодарю.

1 ответ

Решение

Это звучит как работа для распределенных очередей задач. Мой личный фаворит - Beanstalkd B / C, он настолько легкий и простой в использовании.

Сервер: https://github.com/kr/beanstalkd
Клиентская библиотека: https://github.com/PeterScott/beanstalkc
Помощник Джанго: https://github.com/jonasvp/django-beanstalkd

Это будет работать так:
1. Файл загружается и хранится локально
2. Работа создается в виде загрузки и помещается в трубочный боб
3. Бобовые стебли наблюдают за трубками для работы, они берут новую работу
4. Работник может создавать эскизы и распространять их на столько серверов, сколько вам нужно

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

Другие вопросы по тегам