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

问题描述:

我已经看到某些(例如在quora)上提到的600个呼叫/ 600秒速率限制。Facebook图形API速率限制和批量请求

我想知道的是我是否被允许在600秒内完成600 batch个请求(一个批量请求最多包含50个请求)。

+0

“我们目前限制批请求数50 “。 - [Facebook](https://developers.facebook.com/docs/reference/api/batch/)。 50什么?每分钟,每天,用户请求!? – Xeoncross 2012-07-10 17:12:29

+0

我想知道同样的事情。 50个并发请求,请求每分钟,每天,每次换尿布? – 2012-08-15 15:44:40

+2

嗯..我想嘲笑FB,但是阅读他们的文档澄清了一些事情:“我们目前将可批量处理的请求数量限制为50个,但批处理中的每个调用都会单独计算以用于计算API调用限制和资源限制,例如,一批10个API调用将计为10个调用,批处理中的每个调用都以相同的方式对CPU资源限制做出贡献。“ – 2012-12-19 03:30:56

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

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

速率限制(API_EC_TOO_MANY_CALLS)如果您的应用程序发出了太多的呼叫,API服务器会自动打分限制你, 返回一个 “API_EC_TOO_MANY_CALLS” 的错误。一般来说,这不应该发生 。如果是这样,那是因为你的应用程序已经确定 正在进行太多的API调用。迭代您的代码,以便尽可能少地拨打 以保持所需的用户体验 。您还应该避免复杂的FQL查询。要了解 如果您的应用程序被限制,请转到“见解”并点击 “限制”。

编辑

正如评论跟帖报告IGY,在那批数为1的每个请求您的600例子是最大极限,这意味着你可以火了15名批次的请求每个包含50个呼叫。

+8

感谢您指出最佳做法。然而,我的问题是,如果批量请求和单个请求都算作1次请求而不是限制。 – daremon 2012-01-11 09:10:04

+0

如果Facebook的文档没有说明正在执行哪些操作,那么为了不让您的开发人员帐户被标记/撤销并监控从API返回的错误,您应该谨慎小心。最好的做法是监控这些错误并按照他们的说法行事。 – DMCS 2012-01-11 16:16:06

+0

链接不再工作?我需要实施速率限制,我会回复什么样的回应? – 2012-04-27 11:57:20

从我的经验来看,无论他们的方式如何(分批或不分批),他们都会计算个人请求。例如,如果我试图做1个批/秒,每个包含10个请求,我很快就会得到'太多的电话'。

如果我正在做1批/ 10秒,每个批次包含10个请求,我从来没有看到过多的电话。

我个人没有看到任何理由更喜欢批量定期API调用。

批次调用必须按批次中的每个项目进行计数。一个包含50个项目的批次调用相当于使用该图表的50个api调用。

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

我们目前限制其可以是一个批次 至50的请求的数量,但该批次内的每个呼叫被用于计算API调用限制和资源限制的 目的分开计数的。例如,对于 示例,一批10个API调用将计为10个调用,并且批处理中的每个调用 都会以相同的 方式贡献CPU资源限制。

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

我没有经验证据不过。

大卫

我有相当与Facebook的API一个天大的痛苦,现在的经验,我可以说:

  • 如果一批请求包含50个请求,那么它算作Facebook上50个请求
  • 1 request!= 1 call。 Facebook有自己的呼叫定义。如果你的请求很大,返回大量数据或者消耗大量的CPU,那么它将被视为多次调用。

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

你有很多其他的速率限制但没有人得到妥善记载...