Google app engine 死线超差
当我尝试在Google App Engine的数据存储中使用以下查询时:Google app engine 死线超差,google-app-engine,gqlquery,Google App Engine,Gqlquery,当我尝试在Google App Engine的数据存储中使用以下查询时: user = User.all().filter('name =',userName).get() 我有一个错误:死线超出了derror 编辑: 这是我的职责: def feeds(request): dict = get_user_details() search_key = None if request.GET.has_key('search_key'): search_ke
user = User.all().filter('name =',userName).get()
我有一个错误:死线超出了derror
编辑:
这是我的职责:
def feeds(request):
dict = get_user_details()
search_key = None
if request.GET.has_key('search_key'):
search_key = request.GET['search_key']
dict['search_key']=search_key
feeds = list()
if search_key is not None and search_key!="":
feeds_list = Feed.all().order('-CreatedDate')
search_string=string.upper(search_key)
for feed in feeds_list:
feed_name=string.upper(feed.FeedUrl)
if search_string in feed_name:
feeds.append(feed)
dict['search_key']=search_key
else:
feeds = Feed.all().order('-CreatedDate')
if request.GET.has_key('page'):
page = request.GET['page']
try:
page = int(page) - 1
except:
page = 0
paginator = Paginator(feeds,10)
if page>=paginator._get_num_pages():
page = paginator._get_num_pages() - 1
dict["page_obj"] = paginator.page(page+1)
return render_to_response('feed_list.html', dict, context_instance=RequestContext(request))
在提要上搜索会花费太多时间,导致死线超出derror这将无法扩展:
您将从数据存储中提取每个反馈对象,然后根据搜索词对列表进行本地筛选。如果您只希望每页显示10条记录,请在查询对象上执行
fetch(10)
,这样您就不会试图在一页中提取每个实体。用于分页。如果你想过滤大量的实体,你需要预先定义一个满足查询的数据存储索引;获取所有内容并在本地进行筛选的效率非常低。我敢打赌,处理程序中的某些内容比索引类型上的get()更耗时。给我们看看你的代码!他基本上是在进行可怕的“表格扫描”。我不认为fetch(10)
可以解决这个问题,因为他必须读取所有实体才能找到正确的匹配项。我会选择这样的方式来摆脱分页功能。
feeds_list = Feed.all().order('-CreatedDate')
search_string=string.upper(search_key)
for feed in feeds_list:
feed_name=string.upper(feed.FeedUrl)
if search_string in feed_name:
feeds.append(feed)