【问题标题】:Django handle transaction on filter queryDjango处理过滤查询事务
【发布时间】:2022-01-17 07:16:03
【问题描述】:

我有一个 Model,它有一个“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>")

【问题讨论】:

    标签: django django-models django-queryset django-orm


    【解决方案1】:

    在官方文档中,对事务处理有很好的描述。

    https://docs.djangoproject.com/en/4.0/topics/db/transactions/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-22
      • 2019-04-15
      • 2011-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多