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/

Вернуться на верх