在GAE的基于python的facebook应用程序中,我想检查当前用户的哪些朋友已经“标记”了网页或不是。列表查询,列表中的Facebook朋友?
为此我必须运行尽可能多的数据库查询作为朋友的数量(比如说100) 我担心这可能会因为大量的查询而进入“超时”状态。
Google DOC建议“列表”查询并行运行,这会节省时间吗? 另外列表有30的限制,所以我必须做2或3个列表类型的查询。
请建议如果可能的话更好的方法,使用任务疑问句或东西....
在GAE的基于python的facebook应用程序中,我想检查当前用户的哪些朋友已经“标记”了网页或不是。列表查询,列表中的Facebook朋友?
为此我必须运行尽可能多的数据库查询作为朋友的数量(比如说100) 我担心这可能会因为大量的查询而进入“超时”状态。
Google DOC建议“列表”查询并行运行,这会节省时间吗? 另外列表有30的限制,所以我必须做2或3个列表类型的查询。
请建议如果可能的话更好的方法,使用任务疑问句或东西....
如果您已经知道他们的密钥或密钥名称,则可以并行获取多达1000个实体。
有几种方法可以解决您的具体问题。这是一个。
我们假设当用户“标记”一个网页时,您将创建一个带有从用户的facebook标识和页面关键字派生的key_name的实体。
class PageMarker(db.Model):
user = db.ReferenceProperty(AppUser)
....
@classmethod
def mark_page(cls, user, page_key):
marker = cls.get_or_insert("%s_%s" % (user.facebook_id,
page_key, user=user)
这可以让你获取所有谁标志着平行页面的用户:
key_names = ["%s_%s" % (friend.facebook_id, page_key) for friend in friends]
markers = db.get(key_names)
# Use get_value_for_datastore to get the entity key without making a trip to the
# datastore
friends_who_bookmarked_keys = [marker.__class__.user.get_value_for_datastore(marker)\
for marker in markers]
friends = db.get(friends_who_bookmarked_keys)
很多感谢你的回复,真的很有帮助,但我很抱歉没有要求它正确和完整,但我希望根据用户评分(1 - 5)排序查询结果,我应该在Python代码中排序结果还是尝试将它从查询中分类出来,成本更低 – Tiwari 2010-08-31 20:02:50
我建议如下:
我不要求其正确和完整的遗憾,但我想查询结果按用户等级分类(1 - 5) – Tiwari 2010-08-31 19:59:10