我正在開發Facebook應用程序。它使用Python編寫並在Google App Engine(GAE)上運行。從Google App Engine上運行的Python中提取Facebook的關係狀態
我知道如何獲得用戶網絡的關係狀態,但我這樣做的方式是減速的方式。 GAE有一個時間限制,以減少大約60秒的CPU使用量。使用下面的代碼,我可以在獲得「DeadlineExceededError」之前獲得該時間框架內約200人的關係狀態。當然這還不夠好,因爲很多/大多數人在Facebook上擁有更多的朋友。
我現在要做的是獲取用戶的好友列表,然後爲每個人請求名稱和關係狀態進行API調用。
的代碼我使用:
for f in friends:
friends_info[f] = facebook.api('/'+f, {u'fields': 'name,relationship_status',
u'access_token': facebook.access_token})
然後我得到的數據:
rel_status = friends_info[f][u'relationship_status']
我需要什麼:優化
建議或其他方式提取整個網絡的關係狀態。
在此先感謝:-)
編輯:
的答案似乎是解決我的問題都好辦法。雖然,我找不到任何用於Python的批量請求的好教程,所以我最終使用了FQL調用。通過下面的它需要1-2秒來獲取數據:
data = fql.query(Q,facebook.access_token)
它調用這個函數:
def query(self,Q,access_token):
ENDPOINT = 'https://api.facebook.com/method/'
params = dict(query=Q, access_token=access_token, format='json')
url = ENDPOINT + 'fql.query'
return self._fetch(url, params=params)
def _fetch(self, url, params=None):
conn = urllib2.urlopen(url, data=urlencode(params))
try:
return json.loads(conn.read())
finally:
conn.close()
希望
Q = 'select uid, sex, relationship_status from user where uid in (select target_id from connection where source_id = me())'
和實際數據被檢索有人可以利用它!
查詢最多20個用戶除了下面的兩個答案,你應該運行在任務隊列任務的代碼,其中有10分鐘的限制,不60秒。 –