问题:信号接收器检查特定条件下是否存在模型条目,如果不存在,则创建一个新条目。在极少数情况下,条目被重复。
在接收器函数中:
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。