私のアプリでは、実行するバッチ操作がいくつかあります。残念ながら、これは 400 ~ 500 個のエンティティを更新するのに永遠にかかることがあります。私が持っているのはすべてのエンティティ キーです。それらを取得し、プロパティを更新してデータストアに保存する必要があります。保存には最大 40 ~ 50 秒かかりますが、これは探しているものではありません。
私のモデルを単純化して、私が何をしているのかを説明します (とにかく非常に単純です):
class Entity(ndb.Model):
title = ndb.StringProperty()
keys = [key1, key2, key3, key4, ..., key500]
entities = ndb.get_multi(keys)
for e in entities:
e.title = 'the new title'
ndb.put_multi(entities)
取得と変更にそれほど時間はかかりません。タスクレットで get_async を取得しようとしましたが、get または forloop に時間がかかる場合にのみ変更される可能性があります。
しかし、本当に気になるのは、プットに最大50秒かかることです...
この操作を適切な時間内に実行する最も効率的な方法は何ですか。もちろん、エンティティの複雑さなどの多くの要因に依存することはわかっていますが、配置にかかる時間は実際には許容範囲を超えています.
私はすでに非同期操作、タスクレットを試しました...