gpt4 book ai didi

django - 重复的请求线程在 Django 模型中创建重复的数据库条目

转载 作者:行者123 更新时间:2023-12-04 06:32:02 24 4
gpt4 key购买 nike

问题 :信号接收器检查特定条件下是否存在模型条目,如果不存在,则创建新条目。在极少数情况下,条目会被复制。

在接收器函数中:

try:
my_instance = MyModel.objects.get(field1=value1, field2=sender)
except:
my_instance = MyModel(field1=value1, field2=sender)
my_instance.save()

它是 get_or_create 的明显候选者,但除了清理该代码之外,还会使用 get_or_create帮助防止这个问题?

该信号是在用户操作之后发送的,但我不认为原始请求被复制,因为这会触发其他操作。

在数千个实例中,重复发生了几次。这是否一定是由多个请求引起的,还是有某种方式可以创建重复的线程?有没有一种方法——也许是细粒度的事务管理——来防止重复?

在 Apache2 上使用 Django 1.1、Python 2.4、PostgreSQL 8.1 和 mod_wsgi。

最佳答案

为防止信号重复,将“dispatch_uid”参数添加到信号附件代码中,如 described in the docs .

确保您打开了一个事务 - 否则可能会发生,检查 (objects.get()) 和 cration (save()) 表的状态发生变化。

关于django - 重复的请求线程在 Django 模型中创建重复的数据库条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5278900/

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