0

Google App Engine でゲーム サーバーを実行しています。私の HTTP リクエストのいくつかは、異なるモデルへの複数のプットをもたらします。たとえば、ユーザー モデルとゲーム モデルがあり、1 つの要求で両方に書き込むことができます。NDB データベース インターフェイスで python を使用しています。

両方が成功することを保証する方法、または一方が成功し、一方が失敗して両方が失敗することを保証する方法はありますか? トランザクションは正しいことのように聞こえましたが、ドキュメントを読んだ後では明確ではなく、複数のリクエストと衝突について話している.

単一の put でエンティティのリストを取得できることはわかりますが、1 つが失敗するとすべての動作が失敗するという言及はありません。

4

2 に答える 2

2

はい、トランザクションはあなたが必要とするものです。ただし、トランザクション内ですべてのデータを書き込むには、祖先を使用してデータを適切に構造化する必要があります。

いずれかのプットが失敗した場合、トランザクション内のどのプットも書き込まれません。ドキュメントでそう言っています。

https://developers.google.com/appengine/docs/python/datastore/transactions

于 2012-08-29T23:36:52.950 に答える
0

XG トランザクションを使用して、最大 5 つのエンティティ グループ (親子モデルを使用しない場合は最大 5 つのオブジェクト) を更新できます。

すべてのエンティティ グループ (またはオブジェクト) には、約 1 トランザクション/秒の制限があります。

ndb トランザクション: https://developers.google.com/appengine/docs/python/ndb/transactions xg トランザクションの制限: https://developers.google.com/appengine/docs/python/datastore/overview#Cross_Group_Transactions

于 2012-08-30T01:12:18.797 に答える