Назад к задачамПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior
10
Обработка фидбэка
Условие задачи
В API-контроллере создаётся объект Feedback, после чего асинхронно вызывается задача change_status_feedback. В задаче меняется статус фидбэка, отправляется письмо и объект сохраняется.
Проверить:
- Можно ли передавать feedback целиком в Celery-задачу (не лучше ли передать id);
- Не возникнут ли проблемы сериализации объекта feedback;
- Как работает send_mail() — блокирует ли он выполнение, есть ли исключения;
- Гарантируется ли, что feedback.save() завершится успешно после отправки письма;
- Корректно ли выставляется статус in_progress.
@app.task(name='change_status_feedback')
def change_status_feedback(feedback):
feedback.status = 'in_progress'
send_mail()
feedback.save()
class CreateFeedbackAPIView(APIView):
def create(self, request):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
feedback = Feedback.objects.create(**serializer.validated_data)
change_status_feedback.delay(feedback)
return feedback