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

dar*_*mon 26 api facebook-graph-api

我已经看到一些人提到的600次通话/ 600秒速率限制(例如在quora上).

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

DMC*_*MCS 12

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

来自: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个请求. (9认同)
  • 批量请求50计为50个API调用 - 主要优点是设置依赖关系并降低对API的往返调用次数 - 尽管它不会影响调用或资源限制 (4认同)
  • 有谁知道原问题的答案?我很清楚你应该处理太多的调用错误代码,但我仍然想知道批量请求是否算作API速率限制的多个请求. (3认同)

Mar*_*uez 8

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

我们目前将批处理中的请求数限制为50,但为了计算API调用限制和资源限制,批处理中的每个调用都会单独计算.例如,一批10个API调用将计为10个调用,批处理中的每个调用都以相同的方式提供CPU资源限制.

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

然而,我没有经验证据.

大卫


Nik*_*pov 6

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

例如,如果我正在尝试每批包含10个请求的1批/秒,我很快就会收到"太多调用".

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

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


tib*_*ibo 5

我现在在使用Facebook API方面经历了很多痛苦的经历,我可以指出:

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

我执行的最频繁的图形API调用包含许多嵌套字段,并且我注意到执行200次后达到了“ 600个调用/ 600秒”。所以基本上这个电话在我的情况下算为3 ...

您还有很多其他速率限制,但是没有一个正确记录。