それは良い習慣ですか?1 人のユーザーがリクエストを行い、データストアからエンティティを取得し、変更して保存します。別のユーザーが同じエンティティで同時にこれを行います。最初のユーザーの要求がまだ完了していない場合、2 番目のユーザーは最初のユーザーの変更を見ることができますか? 2人のユーザーに「同意」してもらいたい場合、どのパターンを使用すればよいですか? 最初は「はい」と言い、2 番目は「はい」と言い、取引が成立します。クライアント側からのポーリングを使用して監視する必要がありますか?
質問する
65 次
1 に答える
2
そのためには取引が必要です。
詳細と実践については、こちらをお読みください: https://developers.google.com/appengine/docs/python/datastore/overview
トランザクションは、最初にコミットしたものが勝つというロジックで発生します! しかし、再試行は可能です...
@db.transactional(retries=3)
def make_agreement_for_user_a(agreement):
agreement = Agreement.get(agreement)
if agreement.user_a:
return "User A has already agreed"
agreement.user_a = TRUE
agreement.put()
if agreement.user_b:
return "Agreement complete"
return "User A agreed"
@db.transactional(retries=3)
def make_agreement_for_user_b(agreement):
agreement = Agreement.get(agreement)
if agreement.user_b:
return "User B has already agreed"
agreement.user_b = TRUE
agreement.put()
if agreement.user_a:
return "Agreement complete"
return "User B agreed"
これは単なる例であり、最適化されておらず、既に合意があるかどうかを確認することもありません。後は君しだい
于 2012-12-25T13:59:34.563 に答える