1

私は現在、django non-rel Web フレームワークを使用して Google アプリ エンジン アプリを開発しています。ある口座から別の口座に送金する方法があります。非常に簡単です。デバッガーを使用してローカルサーバーで実行すると、問題なく動作し、すべてのお金が正しく転送されます。ただし、アプリ エンジンでリモートで実行すると、奇妙な負の値になります。メソッドの核心は次のとおりです。

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を使用してアプリエンジンでトランザクションを動作させる方法を誰か教えてもらえますか!? 誰かがそれを解決したに違いありません!

4

1 に答える 1

1

シンプル、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)
于 2012-11-16T19:46:10.647 に答える