Django обрабатывает транзакцию при запросе фильтра
У меня есть Модель, которая имеет атрибут "score" и маршрут, который возвращает объект с biggest score из базы данных (MySQL).
Я хочу использовать несколько экземпляров одного и того же приложения (два микросервиса) и боюсь, что столкнусь с условиями гонки, когда обе машины будут возвращать одного и того же клиента. Как я могу убедиться, что этого не произойдет? После возврата клиента он будет помечен как PROCESSED.
def getClient(request):
client = Client.objects.order_by('-score').filter(state="UNPROCESSED").first()
client.state = "PROCESSED"
client.save()
return HttpResponse(f"<h1>{client.name}</h1>")
В официальном документе обработка транзакции хорошо описана.
https://docs.djangoproject.com/en/4.0/topics/db/transactions/