データストア内に多数の既存のエンティティがあるモデルにComputedPropertyフィールドを追加したいと思います。すべてのComputedPropertyフィールドを再生成
この新しいComputedPropertyで既存のエンティティをクエリするには、まず計算されたプロパティを生成する必要があります。
計算をトリガして計算された値をデータストアに戻す最も効率的な方法は何ですか?
データストア内に多数の既存のエンティティがあるモデルにComputedPropertyフィールドを追加したいと思います。すべてのComputedPropertyフィールドを再生成
この新しいComputedPropertyで既存のエンティティをクエリするには、まず計算されたプロパティを生成する必要があります。
計算をトリガして計算された値をデータストアに戻す最も効率的な方法は何ですか?
実際にどれだけのデータがあるかによって異なります。ここではタスクキューのソリューションですが、それはあなたのクォータで外食します...
class StampValue(webapp.RequestHandler):
_task_url = '/tasks/stamp'
_page_size = 100
@classmethod
def fire(cls, **params):
taskqueue.add(url=cls._task_url, params=params)
def get(self):
self.fire()
def post(self):
key = self.request.get('key')
if key:
entities = MyModel.gql('WHERE __key__ >= :1 ORDER BY __key__ ASC', db.Key(key)).fetch(self._page_size+1)
else:
entities = MyModel.gql('ORDER BY __key__ ASC').fetch(self._page_size+1)
key = None
if len(entities) == self._page_size+1:
key = str(entities[-1].key())
self.fire(key=key)
entities = entities[:self._page_size]
for entity in entities:
# update your field here
db.put(entities)
あなたが話しているエンティティの数によって異なります。 MapReduceまたは単にリモートAPIを使用する(コンソールを起動して手動で行う)
ありがとう。これはうまくいくはずです。 – kvdb