Я создал API в DRF , который принимает POST-запрос с некоторыми данными, но иногда я чувствую, что одни и те же запросы идут параллельно, что приводит к дублированию данных в БД.
class Feedback(models.Model):
user = models.ForeignKey(Student)
message = models.CharField(max_length=255)
Использование может отправить один и тот же отзыв несколько раз.Давайте подумаем, что это открытый API, так что каждый может его использовать, и в чьем-то приложении пользователь нажимает несколько раз на кнопку, и я получил несколько запросов, но данные должны быть сохранены только один раз.
Я попытался добавить BooleanField
к Student
таблице и использовал следующий код, чтобы предотвратить это.Но так как несколько запросов, поступающих параллельно, могут читать одно и то же значение True
.
if student.can_submit_feedback:
student.can_submit_feedback = False
student.save()
else:
# Code for saving feedback
student.can_submit_feedback = True
student.save()
Я хочу обрабатывать только один вызов API для одной и той же конечной точки и одного и того же IP-адреса одновременно.Как мне этого добиться?
Обновлено
Я исследовал и обнаружил, что мы можем добавить блокировку на таблицу или объект, но я ищу предотвращения на уровне запросов