1

我正在开发一个 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 有一些限制,例如每天 1 亿次 API 调用。因此,如果我批量发送我的 2 个多查询/更大的多查询,facebook 会将其计为 1 个 API 调用吗?

编辑:批量请求我的意思是这个https://developers.facebook.com/docs/reference/api/batch/

我不是在问我是否应该使用 FQL 或 Graph API,我想知道批量发送多查询和将它们作为 1 个更大的多查询发送之间是否有区别。

4

1 回答 1

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>) )"

批处理请求会给您带来的好处是您可以使用多个访问令牌一次性获取此信息。

于 2013-01-18T15:04:26.060 回答