python - App Engine Django 非相关竞争条件

标签 python django google-app-engine race-condition

我目前正在使用 django non-rel Web 框架开发一个谷歌应用程序引擎应用程序。我有一种方法可以将钱从一个帐户转移到另一个帐户,非常简单。当我使用调试器在本地服务器上运行它时,它工作正常并正确转移所有资金。然而,当我在应用程序引擎上远程运行它时,我最终得到了奇怪的负值。该方法的关键在于:

pubAccount.secondary_money = pubAccount.secondary_money + transaction.money
pubAccount.money = pubAccount.money - transaction.money

经过广泛的研究,我发现这可能是由于我没有使用事务,这意味着传输绝不是原子的,因此可能会发生竞争条件。但是 django non-rel 不能正确支持事务,并且它所支持的部分不受应用程序引擎直接支持,并且根据我的发现,python-app 引擎工具包支持的任何内容都不被 django non-rel 支持.

谁能告诉我如何使用 django non-rel 在应用程序引擎上进行交易!? 一定有人在那里解决了这个问题!

最佳答案

简单,使用db.run_in_transaction()

编辑:

如果有帮助,这是我使用的分支,运行 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)

关于python - App Engine Django 非相关竞争条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13423053/

相关文章:

python - Django-奥斯卡 : deleting a voucher don't delete the associated "ConditionalOffer"

mysql - Strapi + Cloud SQL for MySQL on Google App Engine - 服务器无法正常启动错误 : getaddrinfo EAI_AGAIN

python - 使用 Pandas DataFrame/排序

python - 替换列表中的字符串,然后连接列表以形成新字符串

python - 用于替换多个文本的 SED 或 AWK 脚本

django - Web应用后台流程,新手设计题

带有多个 S3 存储桶的 django 存储

google-app-engine - App Engine 数据存储区访问

node.js - Google App Engine Node.js 应用程序 - “Error parsing app.yaml: Unknown url handler type”

python - 如何在Python中获得巨大对角矩阵的伪逆?