什么清除Django中select_for_update创建的锁?

时间:2014-02-22 18:44:06

标签: django

如果我执行select_for_update,该锁何时/如何释放?一些示例代码:

for rec_id in list(1,2,3):
    record = MyModel.objects.select_for_update().get(pk=rec_id)
    # Do several things to this record
    record.save()

save()之后是否释放了锁,或者在视图返回并且整个事务完成后是否释放了锁?如何控制锁的粒度?

文档似乎没有说:https://docs.djangoproject.com/en/1.6/ref/models/querysets/#select-for-update

1 个答案:

答案 0 :(得分:10)

锁定在交易期间有效,由您控制。因此,您可以使用常用方法控制事务的粒度来控制锁的粒度:@transaction.atomicwith transaction.atomic()ATOMIC_REQUESTS = True等。请参阅transaction documentation。< / p>