我有:
IntegrityError
duplicate key value violates unique constraint "user_pkey"
DETAIL: Key (id)=(3220037) already exists.
这发生在这部分代码中
user = User()
user.save()
模型非常简单,3个字段。因此,当我的端点有大量并行请求时,就会发生这种情况。
我认为 Django 在后台以如此简单的操作处理竞争条件。数据库是Postgres,默认事务隔离是已提交读。
也许新版本的 Django 有所改变?我必须在代码中自己处理竞争条件吗?
在您的模型查询集上使用事务原子 解决方案1
@transaction.atomic
def create_user():
user = User()
user.save()
解决方案2
with transaction.atomic():
user = User()
user.save()
`