gpt4 book ai didi

python - 线程应用程序 + IntegrityError

转载 作者:行者123 更新时间:2023-11-29 13:07:37 25 4
gpt4 key购买 nike

我有 python 线程应用程序 + Postgres。我正在使用 Django 的 ORM保存到 Postgres..
我有并发保存调用。偶尔有 2 个线程保存导致问题的相同主键。

Postgres 日志:
错误:重复键值违反唯一约束“store_pkey”
声明:插入“商店”(“store_id”,“地址”)VALUES(E'HAN277',E'101大洋街')

代码:
在代码中,我看到了 IntegrityError。我尝试了不同的处理方式这。

一个.
尝试:
a.保存()
除了 IntegrityError:
通过

这会导致内部错误

试图做交易回滚..但不确定..据我所知了解您需要区分保存调用才能进行交易

      sid = transaction.savepoint()
try:
row.save()
except IntegrityError, e:
transaction.savepoint_rollback(sid)
pass
transaction.commit()

第一个保存点失败

AttributeError: 'NoneType' 对象没有属性 'cursor'

一个。我在某处读到 django 不是 100% 线程安全的。是不是很好在我的用例中选择。我已经在其他应用程序中使用 Django并且需要一个 ORM.. 所以我自然而然地选择了 Django
b.如何处理这种情况..任何意见。

感谢和问候,拉米亚

最佳答案

只是为了确保,如果我理解正确的话,您使用的是字符串作为主键?

AttributeError: 'NoneType' object has no attribute 'cursor'

这意味着某些 Python 代码中存在错误。您是否尝试过使用 Django 的其他版本或修订版或在 Django trac 中搜索您的错误?如果您使用的是来自主干的版本,那么受到某些错误影响的情况并不少见。

作为替代方案,如果可以的话,您也可以尝试使用多进程而不是多线程来部署 Django。

但是,您可能仍想找出收到重复请求的原因,因为它可能会发现其他一些错误。

关于python - 线程应用程序 + IntegrityError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1212864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com