在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