首页 文章

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

提问于
浏览
26

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

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

5 回答

  • 4

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

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

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

    edit

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

  • 6

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

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

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

    然而,我没有经验证据 .

    大卫

  • 2

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

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

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

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

  • 11

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

    • 如果批处理请求包含50个请求,则在Facebook上计为50个请求

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

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

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

  • 8

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

相关问题