Мне помогли на 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)
})