并行请求上的 Django 完整性错误

问题描述 投票:0回答:1

我有:

IntegrityError
duplicate key value violates unique constraint "user_pkey"
DETAIL:  Key (id)=(3220037) already exists.

这发生在这部分代码中

            user = User()
            user.save()

模型非常简单,3个字段。因此,当我的端点有大量并行请求时,就会发生这种情况。

我认为 Django 在后台以如此简单的操作处理竞争条件。数据库是Postgres,默认事务隔离是已提交读

也许新版本的 Django 有所改变?我必须在代码中自己处理竞争条件吗?

django postgresql race-condition
1个回答
0
投票

在您的模型查询集上使用事务原子 解决方案1

        @transaction.atomic
        def create_user():
            user = User()
            user.save()

解决方案2

 with transaction.atomic():
   user = User()
   user.save()

`

© www.soinside.com 2019 - 2024. All rights reserved.