我目前正在使用django非rel网页框架开发谷歌应用引擎应用。我有一种方法可以将钱从一个账户转移到另一个账户,这很简单。当我使用调试器在我的本地服务器上运行它时,它工作得很好,并正确地转移所有的钱。但是,当我在app引擎上远程运行它时,我最终得到了奇怪的负值。该方法的关键是:
pubAccount.secondary_money = pubAccount.secondary_money + transaction.money
pubAccount.money = pubAccount.money - transaction.money
经过广泛的研究后,我发现这可能是因为我不使用交易意味着转移绝不是原子的,因此可能会出现竞争条件。但是django non-rel不能正确支持事务,并且它支持的部分不是由app引擎直接支持的,并且从我发现的内容来看,django non-rel不支持python-app引擎工具包支持的任何内容。
所以有人可以告诉我如何使用django non-rel在app引擎上进行交易!? 有人必须让它在那里工作!
答案 0 :(得分:1)
修改强>
如果有帮助,这里是我使用的分支,运行django-1.4,支持祖先查询。
https://github.com/dragonx/djangoappengine.git -> django-1.4 branch
https://github.com/dragonx/django-1.4.git -> 1.4-nonrel branch
https://github.com/dragonx/djangotoolbox.git -> features/django-1.4 branch
https://github.com/dragonx/django-dbindexer.git -> develop branch (although the 1.4wip branch looks better)