例:
- プロセス A - memcache からエンティティの最新バージョンを取得します
- プロセス B - memcache からエンティティの最新バージョンを取得します
- プロセス A - (1) で取得したエンティティを更新し、
puts
db/memcache で更新します。 - プロセス B - (2) で取得したエンティティを更新し、
puts
db/memcache で更新します。
更新 3. が失われました。
これを防ぐためにどのような戦略/パターンを使用できますか?
例:
puts
db/memcache で更新します。puts
db/memcache で更新します。更新 3. が失われました。
これを防ぐためにどのような戦略/パターンを使用できますか?
アトミックにするには、トランザクション内で更新を行う必要があります。
https://developers.google.com/appengine/docs/python/ndb/transactions