DataStoreに多くのエンティティを一度に配置します
-
26-10-2019 - |
質問
私は多くのエンティティをデータストアに入れたループを持っています。
for line in open(file):
if count >= limit:
break
elif count >= offset:
prop1 = XXX
prop2 = YYY
MyEntity(prop1=XXX, prop2=YYY).put()
count += 1
私はの使用について知っています バルクアップローダー, 、しかし、私はコード内からこれを行う必要があります。制限がそれほど大きくない限り、私が現在機能しているのは、締め切りを超えたエラーを超えますが、それはこの質問の範囲ではありません)、私は尋ねているだけですこれを行うためのより良いまたはより効率的なアプローチがある場合、これはugいハックのように思えるので、たとえば、すべてのエンティティをループなどではなく1つのショットに配置するようなアプローチです。
解決
保存するエンティティごとにデータストアラウンドトリップを行っています。代わりに、それらを蓄積し、単一のバッチPUTを実行します。
to_write = []
for line in open(file):
#...
to_write.append(MyEntity(prop1=XXX, prop2=YYY)
db.put(to_write)
操作を複数の部品に分割する必要がある場合は、タスクキューを使用して、各作業の塊を別のタスクとして排除します。
所属していません StackOverflow