0

2つの新しいオブジェクトを作成するとします。両方が存在するか存在しないかを確認したいので、トランザクションでそれを実行したいと思います。

しかし、私は大きな計算も必要なので、私の質問は、計算を行うのに最適な場所です。トランザクションスコープ内?または外?(a1のキーは計算とは無関係であるため、最初に保存する必要はありません)

@db.transactional()
def _register(self):
 a1.put()
 result = big_calculation_like_hashing(a1)
 a2.prop = result
 a2.put()
4

2 に答える 2

1

いつものようにそれは異なります。計算は完了に依存しているため、トランザクションの外部で、オブジェクトが作成されa2た後に実行するのがおそらく最善です。a2もちろん、これらが何らかの形ですべて共有オブジェクトである場合を除き、その場合は、データの破損を防ぐために、トランザクションのコンテキスト内でこれを行う必要があります。

于 2012-12-14T16:41:03.530 に答える
1

トランザクションの外部で大きな計算を行うことは良い考えです。

@db.transactional()
def _register(self, a1, a2)
        a1.put()
        a2.put()

a2.prop = big_calculation_like_hashing(a1)
self._register(a1,a2)
于 2012-12-14T22:47:08.063 に答える