在 GAE 文档中,它指出:
因为每个 get() 或 put() 操作调用一个单独的远程过程调用 (RPC),所以在循环内发出许多这样的调用是一次处理实体或键集合的低效方法。
谁知道我的代码中还有多少其他低效率,所以我想尽可能地减少。目前,我确实有一个 for 循环,其中每次迭代都有一个单独的查询。假设我有一个用户,一个用户有朋友。我想为用户的每个朋友获取最新的更新。所以我拥有的是该用户的朋友的数组:
for friend_dic in friends:
email = friend_dic['email']
lastUpdated = friend_dic['lastUpdated']
userKey = Key('User', email)
query = ndb.gql('SELECT * FROM StatusUpdates WHERE ANCESTOR IS :1 AND modifiedDate > :2', userKey, lastUpdated)
qit = query.iter()
while (yield qit.has_next_async()):
status = qit.next()
status_list.append(status.to_dict())
raise ndb.Return(status_list)
有没有更有效的方法来做到这一点,也许以某种方式将所有这些批处理到一个查询中?