我需要在Google App Engine上更新许多类FOO的实例使用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()
我打算在推动队列任务中执行此代码
哪一种是正确的方法(如果有)执行任务并避免超时或内存问题?有数千种Foo类型。
如果您打算使用推动队列,为什么不将作品分成较小的零件(例如,由您的光标尺寸)分开,并且每个零件都按其他任务处理?这样,您就不应该有可伸缩性问题,因此可以自由选择您想要/喜欢的任何解决方案。
沿着Google Appengine讨论的解决方案的线条:任务队列绩效(但用推送队列替换递延的库)。