Мне нужно обновить несколько экземпляров класса Foo в Google App Engine Datastore, используя ndb.Самый удобный способ обновления нескольких экземпляров в хранилище данных Google для устройств с ndb
Вот что я до сих пор:
while more:
foo_instances, more_cursor, more = Foo.query().fetch_page(
20, start_cursor=more_cursor)
for foo in foo_instances:
bar = foo.bar.get() # foo.bar is a Key to a Bar instance.
bar.updated = True
ndb.put_multi(foo_instances)
и (тасклет дружественных):
foo_iterator = Foo.query().iter()
while (yield foo_iterator.has_next_async()):
foo = foo_iterator.next()
bar = foo.bar.get() # foo.bar is a Key to a Bar instance.
bar.updated = True
yield bar.put_async()
Я планирую выполнить этот код в Push Queue задачи, которую я считаю, чтобы иметь 10 минут окно перед тем, как тайм-аут.
Каков правильный подход (если есть), чтобы выполнить задачу и избежать проблем с таймаутом или памятью? Существует несколько тысяч экземпляров типа Foo.
примечание стороны: в 1-м решении вы, вероятно, захотите отследить и 'put_multi' экземпляры' bar', а не 'foo_instances', правильно? –