def get(self):
links = Link.all().order("author")
response = ""
links.fetch(10)
for link in links:
response += "[link][/link]"
出于某种原因,当在超过8,000个条目的数据库上运行时,该代码占用了令人讨厌的量的CPU,并且最终只是超时。 App Engine是不是应该能够处理大型数据集?我做了些蠢事吗?
答案 0 :(得分:3)
本节:
links.fetch(10)
for link in links:
response += "[link][/link]"
不正确。 .fetch()
返回已获取的记录,但您没有将返回的记录分配给任何内容。然后,您将遍历查询对象,这会导致App Engine以20个批次的形式返回所有8000个结果,这比单个批量提取效率要低得多。
如果您只需要10个结果,则应该这样做:
for link in links.fetch(10):
response += "[link][/link]"
如果您需要所有8000个结果,那么,如果您的用户可以在一个页面中实际处理8000个结果,那么您最好重新考虑。