0

私のデータストアに種類が Dog のエンティティがあるとします。すべての犬に対して簡単な操作を実行したいのですが、たくさんの犬がいます。

all_dogs = Dog.all(keys_only=True)
print dogs.count(100000) #returns 79234, or some equally large number

私が単にこれを行うと:

for dog_key in all_dogs:
    k = dog_key

私が理解していることは、次のことと同じです:

for dog_key in all_dogs.run(batch_size=20):
    k = dog_key

次に、次のようなデータストア タイムアウト例外が発生します。

Timeout: The datastore operation timed out, or the data was temporarily unavailable.

batch_size を 1000 に増やしても問題はありません。

操作タイマーが開始する原因とタイムアウトまでの時間は? タイムアウトにならないようにするにはどうすればよいですか?

この場合、batch_size を大きくすると効果がありましたが、何百万もの Dog エンティティがあった場合はどうなるでしょうか? 操作を実行するときにタイムアウトにならないようにするにはどうすればよいですか?

4

1 に答える 1

3

たくさんの犬がいて、すべてのエンティティを処理したい場合:

  • map/reduce ライブラリを使用できます。

また、自分でプログラミングしたい場合は、次のようにします。

  • タスクを使用できます。タスクは 10 分間実行されます
  • カーソルを使用してタスクを連鎖できます (10 分の締め切りを延長)
  • バックエンドを使用できます
  • 効率のためにバッチ操作を使用できます
  • 効率のためにキーのみの操作を使用できます
  • 効率のために非同期操作を使用できます
  • 効率のために射影クエリを使用できます
于 2012-10-13T15:26:39.200 に答える