使用NDB更新Google App Engine DataStore上多个实例的最方便方法



我需要在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讨论的解决方案的线条:任务队列绩效(但用推送队列替换递延的库)。

相关内容

  • 没有找到相关文章

最新更新