@marselabdullin

Как добавлять объекты через админку с использованием celery django?

Мне помогли на stack overflow перевести код из models.py в tasks py, чтобы он выполнялся асинхронно, но теперь из за переопределения метода save, нельзя просто добавить и обновить модели через админку

tasks.py

from celery import shared_task
    @shared_task
    def update_image(path, width, heigth):
        image = Image.open(path)
        output_size = (width, heigth)
        image.thumbnail(output_size)
        image.save()


models.py:

def save(self):
        task = update_image.delay(self.image.path, self.width, self.heigth)


views.py:

def put(self, request, pk):
            saved_content = get_object_or_404(Content.objects.all(), pk=pk)
            data = request.data.get('content')
            serializer = ContentSerializer(
                instance=saved_content, data=data, partial=True)
            if serializer.is_valid(raise_exception=True):
                content_saved = serializer.save()
            return Response({
                "success": "Picture '{}' updated successfully".format(content_saved.id)
            })
  • Вопрос задан
  • 113 просмотров
Пригласить эксперта
Ответы на вопрос 1
@noremorse_ru
Кто подсказал тебе такую страшилку?) если сейчас в save() вызвать родительский save(), то получим рекурсию, тебе нужно воткнуть таск в сериалайзер
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы