【发布时间】:2018-03-29 05:25:35
【问题描述】:
我的数据存储处理需要很多时间。 因此,我使用 StackDriver -> Trace 检查了哪些过程需要时间。 然后,多次调用“datastore_v3.Next”。
我找到了以下文件。 https://cloud.google.com/appengine/docs/standard/python/tools/appstats
数据存储区查询通常涉及一个 datastore_v3.RunQuery 后跟 零个或多个 datastore_v3.Next 调用。 (RunQuery 返回前几个 结果,因此 API 仅在获取许多结果时使用 Next。 避免不必要的 Next 调用可能会加速您的应用!)
但是,我不明白
- 什么情况下会多次调用datastore_v3.Next?
- 如何避免 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 万个实体。
【问题讨论】:
-
遍历查询对象调用 Next,这是一种典型的使用模式。您能否提供您跟踪的呼叫的代码?
-
谢谢。我添加了我的代码。
-
您是否在代码的任何部分都在循环中获取实体?
-
不在循环中。但它通过 Mapreduce 被多次调用
-
您能否提供更多信息、更多范围,尤其是 MapReduce 部分?代码?
标签: google-app-engine google-cloud-datastore app-engine-ndb google-app-engine-python