【发布时间】:2012-02-01 13:12:17
【问题描述】:
我们对 facebook 的 graph api 的调用次数是否有限制? 如果有,那么我们每个应用每天可以拨打多少电话?
【问题讨论】:
标签: facebook-graph-api facebook facebook-like facebook-fql
我们对 facebook 的 graph api 的调用次数是否有限制? 如果有,那么我们每个应用每天可以拨打多少电话?
【问题讨论】:
标签: facebook-graph-api facebook facebook-like facebook-fql
另一个forum 对这个问题的最佳回答,来自 2010 年的 Ash Rust:
“经过与 Facebook 平台团队的一些测试和讨论,我知道或在文档中没有官方限制。但是,我发现 每 600 秒 600 次调用,每个令牌 &每个 IP 是关于他们阻止你的地方。我还看到了一些基于应用程序的速率限制,但没有任何数字。
作为一般规则,每秒一个呼叫不应受到速率限制。从表面上看,这似乎非常严格,但请记住,您可以批处理某些调用并使用订阅 API 来获取更改。”
截至 2015 年 10 月,上述信息现已过时。根据https://developers.facebook.com/docs/graph-api/advanced/rate-limiting
,现在在任何给定的 60 分钟窗口内每个用户有 200 次 API 调用【讨论】:
根据Facebook dev policies "I. Features and Functionality",唯一的限制是:
(>5M MAU)或(>100M API 调用/天)或(>50M 展示/天)。
(Mau 表示每月用户)
并没有说超出限制后他们会做什么......
今天我遇到了这个限制:
mailbox_fql 的调用次数已超过每 600 秒 300 次调用的速率。
总体而言,每个表都有不同的限制,在大多数情况下,每个 fql 不会返回超过 30 个对象。在我看来,您可以超出一个表的限制,同时您可以访问不同的表,问题是 api 是对所有用户被阻止(超过限制后)还是仅对拥有超出限制...无论如何,超过限制后,您必须等待大约10分钟,这没关系。
所以从技术上讲,您每 10 分钟最多可以在 tablemailbox_fql 中获取 300*30 个对象。
【讨论】:
来自 facebook 文档
用户级别限速
此速率限制适用于除广告 API 之外的所有 API 调用的用户级别。
速率限制在滑动窗口上实时发生。 每个呼叫都分配一个分数。最高分数为 n。 用户根据所拨打的电话累积分数。 当达到最大分数时,将引发限制错误。 错误,代码:17,消息:达到用户请求限制
应用级速率限制
此速率限制在应用级别全局应用。广告 api 调用被排除在外。
在过去一小时的滑动窗口上实时发生速率限制。 收集的统计信息包括调用次数和查询次数、花费的 CPU 时间、每个应用程序使用的内存。 每个资源乘以给定应用程序的每月活跃用户数都有一个限制。 当应用程序使用超过其允许的资源时,将引发错误。 错误,代码:4,消息:已达到应用程序请求限制
检查此文档 https://developers.facebook.com/docs/reference/ads-api/api-rate-limiting/
【讨论】:
根据 FB 文档,批处理中的每个元素都算作一个单独的调用。
我们目前将一个批次中的请求数量限制为 50 个,但为了计算 API 调用限制和资源限制,批次中的每个调用都会单独计算。例如,一批 10 次 API 调用将计为 10 次调用,并且批处理中的每个调用都会以同样的方式造成 CPU 资源限制。
请检查:https://developers.facebook.com/docs/graph-api/making-multiple-requests https://developers.facebook.com/docs/marketing-api/api-rate-limiting
【讨论】:
现在是official:
每个应用在任何给定的 60 分钟窗口内都分配有每个用户 200 次 API 调用。
根据截至 2015 年 10 月 7 日的 Facebook 文档,以下是 Graph API 速率限制的工作原理:
例如,如果您的应用昨天有 10 位用户,今天有 5 次新登录,那么您的基础就是 15 位用户。这意味着您的应用可以在任何 60 分钟窗口内进行 ((10 + 5) * 200) = 3000 次 API 调用。
更多信息在这里:https://developers.facebook.com/docs/graph-api/advanced/rate-limiting
--2016 年 4 月 12 日更新--
Facebook 现在有一个Rate Limit Dashboard,它可以更容易地查看您的应用程序的速率限制是否超出。它看起来像这样:
【讨论】:
Error: read ECONNRESET???
estimatedCallsLeftForThisHour: 1234 会容易得多。