Facebook图形API速率限制和批量请求

时间:2012-01-10 14:58:48

标签: api facebook-graph-api

我看过一些人提到的600次通话/ 600秒限速(例如在quora上)。

我想知道的是,我是否可以在600秒内完成600 batch次请求(批量请求最多包含50个请求)。

5 个答案:

答案 0 :(得分:11)

您应该通过检查以下错误消息以编程方式处理速率限制。如果遇到错误,则应在下次调用之前进入时间等待循环。我的一个高流量应用程序帐户会监视此错误并将减慢速度。

来自:https://developers.facebook.com/docs/bestpractices/

  

费率受限(API_EC_TOO_MANY_CALLS)如果您的应用程序拨打过多电话,API服务器可能会自动对您进行速率限制,   返回“API_EC_TOO_MANY_CALLS”错误。一般来说,这不应该   发生。如果是,那是因为您的申请已经确定   要进行太多的API调用。迭代你的代码,这样你就可以了   尽可能少的电话,以保持用户体验   需要。您还应该避免复杂的FQL查询。要明白   如果您的应用程序受到限制,请转到数据洞察并单击   “节流”。

修改

正如Igy在评论主题中所报告的那样,该批次中的每个请求都计为1.对于600的最大限制示例,这意味着您可以触发15个批处理请求,每个请求包含50个调用。

答案 1 :(得分:8)

根据FB文档,批处理中的每个元素都算作一个单独的调用。

  

我们目前限制了可以在a中的请求数量   批次到50,但批次中的每个调用都单独计算   计算API调用限制和资源限制的目的。对于   例如,一批10个API调用将计为10个调用和每个调用   批处理中的内容有助于CPU资源限制   方式。

引自:https://developers.facebook.com/docs/reference/api/batch/

然而,我没有经验证据。

大卫

答案 2 :(得分:6)

根据我的经验,他们会根据个人的要求计算个人请求(无论是否批量生产)。

例如,如果我正在尝试每批包含10个请求的1批/秒,我很快就会收到“太多的电话”。

如果我正在进行1批/ 10秒,每批包含10个请求,我从未看到过多次调用。

我个人认为没有理由比常规API调用更喜欢批处理。

答案 3 :(得分:4)

我现在使用Facebook API获得了相当大的痛苦经历,我可以说:

  • 如果批量请求包含50个请求,则在Facebook上计为50个请求
  • 1个请求!= 1个电话。 Facebook对呼叫的定义有自己的定义。如果您的请求很大,返回大量数据或消耗大量cpu,那么它将被视为多次调用。

我正在进行的最频繁的图形API调用包含很多嵌套字段,我注意到在完成200次之后我达到了“600次调用/ 600秒”。所以基本上这个电话在我的情况下计数为3 ......

你有很多其他的费率限制,但没有一个是正确记录的......

答案 4 :(得分:2)

批次调用肯定会按批次中的每个项目计算。一个50个项目的批量调用相当于使用图表的50个api调用。