【发布时间】:2011-09-29 00:23:43
【问题描述】:
在我的 Django 应用程序中,我经常需要执行类似于 get_or_create() 的操作。例如,
用户提交标签。需要看看有没有 该标签已经在数据库中。 如果没有,请为其创建新记录。如果 是的,只需更新现有的 记录。
但是查看get_or_create() 的文档,它看起来不是线程安全的。线程 A 检查并发现记录 X 不存在。然后线程 B 检查并发现 Record X 不存在。现在线程 A 和线程 B 都将创建一个新的记录 X。
这一定是很常见的情况。如何以线程安全的方式处理它?
【问题讨论】:
-
两个线程之一会得到重复记录错误和异常。不会有重复的数据。
标签: python database django concurrency thread-safety