如何避免datastore_v3.Next调用

时间:2018-03-29 05:25:35

标签: google-app-engine google-cloud-datastore app-engine-ndb google-app-engine-python

我的数据存储处理需要很多次。 所以,我用StackDriver检查了什么过程需要时间 - >跟踪。 然后," datastore_v3.Next"多次被召唤。

我找到了以下文件。 https://cloud.google.com/appengine/docs/standard/python/tools/appstats

  

数据存储区查询通常涉及datastore_v3.RunQuery,后跟   零个或多个datastore_v3.Next调用。 (RunQuery返回前几个   结果,因此API仅在获取许多结果时使用Next。   避免不必要的下一次通话可能会加快您的应用!)

但是,我不明白

  • 在什么情况下会多次调用datastore_v3.Next?
  • 如何避免接下来的电话?

添加: MyCode位于

之下
    @classmethod
    def get_foo(cls, user_key, foo):
      search_key = ndb.Key('UserInformation', user_key.id(), 'Foo', foo)
      return search_key.get()

UserInformation和Foo类有100万个实体。

1 个答案:

答案 0 :(得分:0)

主要方式是the doc中提到的方法,只是不返回不必要的大结果集。

如果你只关心查询中的前几个结果,你可以考虑使用fetch,它可以返回一组有限的结果而不是整个结果。

此外,您还可以充分利用memcache on NDB,更少的数据存储区调用意味着更少。下一次调用。