Передача изображения в задачу сельдерея - PullRequest
3 голосов
/ 05 марта 2012

Часть приложения, которое я пишу, позволяет пользователям загружать изображения, размер которых я затем изменяю и автоматически загружаю в amazon s3. В настоящее время изменение размера изображения происходит прямо в представлении, и я хотел бы передать это через сельдерей распределенным работникам. Мой вопрос - как лучше всего передать изображение работнику? В настоящее время я думаю сохранить изображение непосредственно в базе данных, а затем просто передать идентификатор работнику и получить его. Есть ли лучший метод, чем временно хранить его в базе данных, пока он не сможет быть обработан?

Ответы [ 2 ]

2 голосов
/ 05 марта 2012

Как указано в документации по сельдерею, лучше не передавать весь объект (изображение) в качестве аргумента, поскольку это приведет к дополнительным накладным расходам. Поэтому лучше сначала сохранить его, а затем передать идентификатор фотографии в качестве аргумента, извлечь изображение в задачу и выполнить изменение размера / загрузку.

1 голос
/ 12 февраля 2013

Вы не можете передать фактическое изображение в Celery, потому что изображение не может быть обработано, однако вы можете деконструировать изображение и отправить все его данные рабочему сельдерея, где вы можете легко восстановить изображение и затем делать все, что вы хотите с Это.

Я создаю небольшое приложение, которое переносит сохранение изображения на рабочего, не составит труда его разветвить и добавить к нему собственное изменение размера. Проверьте это https://github.com/gterzian/django_async

...