2
我在我的ZODB上运行并行写入请求。我的ZODB中有多个BTree
实例。一旦服务器访问这样的BTree
中的相同对象,我得到ConflictError
为IOBucket
类。对于我所有的Django基础类,我设置了_p_resolveconflict
,但无法实现IOBucket
,因为它的基于C的类。ZODB中的冲突解决
我做了一个更深入的分析,但仍不明白为什么它会抱怨IOBucket
类以及它写入的内容。另外,解决这个问题的正确策略是什么?
千谢谢任何帮助!
亲爱的我使用django_zodb,在那里交易很早,我不会拦截它。我昨天发现的是,在更改数据存储之后调用root._p_jar.sync()和transaction.savepoint之后,解决了冲突错误。尽管我没有完全理解这个逻辑。它有意义还是我有点奇怪? – patroqueeet 2012-08-17 06:41:22
另一个问题:所以建立一个能够捕获异常大约5次的loog是有意义的,然后等待几个ms,然后重新执行一个完整的新事务? 如果是这样的话。我记住,我的事务在服务器请求时开始,并在响应呈现时结束。这会过时吗?因此,对于我非常安全的环境来说,复杂交易对zodb来说不是一个好方法?这些交易应该更像ACID? – patroqueeet 2012-08-17 06:44:24
@patroqueeet:'_p_jar.sync()'表示加载最新的数据(这意味着你现在可以使用不一致的状态)。 '保存点'只是一种方法,用于在提交时间之前刷新对磁盘的更改(释放内存)。 – 2012-08-17 06:44:43