我正在开发一个Facebook应用程序,我需要从用户那里获取大量数据。我担心Facebook有限制。我无法逐个发送查询,我很快就会收到错误4“API Too Many Calls”。所以我想知道什么是更好的方法,如果将查询分组到多个查询或批量发送它们。顺便说一下,我将不得不在批量请求中使用多个查询。所以这是一个例子:)
假设USER_A和USER_B是朋友,所以我可以使用1个访问令牌访问它们。
multiquery for USER_A:
"Q0":"SELECT post_id FROM stream WHERE source_id=<USER_A>",
"Q1":"SELECT id FROM comment WHERE post_id IN (SELECT post_id FROM #Q0)"
multiquery for USER_B
"Q2":"SELECT post_id FROM stream WHERE source_id=<USER_B>",
"Q3":"SELECT id FROM comment WHERE post_id IN (SELECT post_id FROM #Q2)"
那么什么是更好的方法,将这2个多查询分组为1个更大的多个查询或将它们放入批处理请求中?在哪种情况下Facebook会将其视为1个API调用? Facebook有一些限制,例如每天100M API调用。因此,如果我以批量/更大的多个查询发送我的2个多个查询,那么facebook会将其视为1个API调用吗?
编辑:按批次请求我的意思是https://developers.facebook.com/docs/reference/api/batch/
我不是在问我是否应该使用FQL或Graph API,我想知道批量发送多个查询并将它们作为1个更大的多个查询发送之间是否存在差异。
答案 0 :(得分:2)
如果您可以使用一个access_token
执行所有操作,根据我的经验,大型FQL多查询会比批处理请求更快地返回结果。
此外,查看您的示例查询,您可以通过组合这些来减少查询数量:
'User_A_Comments':
"SELECT id, post_id FROM comment WHERE post_id IN (SELECT post_id FROM
(SELECT post_id FROM stream WHERE source_id=<USER_A>) )"
批量请求可以为您提供的优势是您可以使用多个访问令牌一次性获取此信息。