Facebook的Graph API调用限制是多少?


Answers:


58

另一个论坛(Ash Rust在2010年)对这个问题的最佳答案是:

“经过与Facebook平台团队的测试和讨论后,我没有意识到或可以在文档中找到任何官方限制。但是,我发现每600秒,每个令牌和每个IP 600个呼叫大约在哪里他们阻止了您,我也看到了一些基于应用程序的速率限制,但没有任何数字。

通常,每秒一次呼叫不应受到速率的限制。从表面上看,这似乎是非常严格的限制,但请记住,您可以批处理某些调用并使用订阅API进行更改。”


截至2015年10月,上述信息已过时。根据https://developers.facebook.com/docs/graph-api/advanced/rate-limiting,在任何给定的60分钟窗口内每个用户现在有200个API调用


12
@mangobug每个令牌和每个IP意味着..究竟是什么?如果我在2个不同的IP中使用相同的令牌,是否意味着我可以将通话次数加倍?如果我有两个仍来自同一IP的访问令牌,能否将通话次数加倍?
亨利·邱

2
@mangobug:我认为邱国Hen的最后评论/问题在这里非常关键:)
Erik Kaplun 2014年

5
“但请记住,您可以批量调用某些代码”,Facebook澄清说,这不会使有效的API调用数量减少到您的极限:“批量调用不会减少api调用的数量。” developers.facebook.com/docs/marketing-api/...
本莫里斯

3
这不再有效,请在任何给定的60分钟窗口中查看用户的答案>每个用户200个API调用
Brandon Romano

1
如何为我的应用吸引更多用户?什么是应用程序用户?它在哪里显示我有多少?
Farzher

48

现在是正式的

在任何给定的60分钟时间范围内,每个应用程序均向每个用户分配200个API调用

2015年10月7日起的Facebook文档中,以下是Graph API上的速率限制的工作原理:

  • 速率限制是在您的Facebook AppId上完成的。如果您的应用程序达到了速率限制,则不仅限于每个用户,还将限制对该应用程序的所有调用。
  • 速率限制是通过计算您的应用前一天拥有的用户数量并添加今天的新登录名来计算的。这给出了您的应用拥有的基本用户数。

例如,如果您的应用昨天有10个用户,今天有5个新登录,那么您的基础用户数为15。这意味着您的应用程序可以在任何60分钟的窗口内进行((10 + 5)* 200)= 3000个API调用。

此处的更多信息:https : //developers.facebook.com/docs/graph-api/advanced/rate-limiting

- 20164月12日更新-

Facebook现在有一个Rate Limit Dashboard,可以更轻松地查看您的应用程序的速率限制是否超过。看起来像这样:

在此处输入图片说明


AFAIK该限制仅适用于Graph API版本2.5及更高版本的应用。较旧的应用没有此限制。
Marius

如果我们达到了极限,Facebook是否可能向我们返回错误Error: read ECONNRESET
Konstantinos Natsios

实际限制不是针对每个用户的,而是每日活跃用户的平均数:“您的应用每小时可以为每个用户总计打200个电话。例如,如果您的应用有100个用户,则意味着您的应用可以赚20,000个这不是每个用户的通话限制,因此一个用户可以拨打19000个电话,另一个可以拨打1000个电话。此限制是根据前一个小时的通话次数计算得出的。”
杰森·古玛

2
如果他们estimatedCallsLeftForThisHour: 1234在每次通话后返回,会容易得多。
8

准确准确的答案!
Alex Pliutau '18

20

根据Facebook开发人员政策“ I.特征和功能”,唯一的限制是:

(> 500万MAU)或(每天> 100M API调用)或(每天> 5000万次展示)。

(毛表示每月的用户)

它没有说超过限制后他们会怎么做...

今天,我遇到了这个限制:

到mailbox_fql的呼叫已超过每600秒300个呼叫的速率。

总体而言,每个表都有不同的限制集,在大多数情况下,fql不会为每个fql返回30个以上的对象。同样在我看来,您可以超出一个表的限制,并且同时可以访问其他表,问题是对所有用户还是仅对具有超出限制...无论如何,超出限制后,您必须等待约10分钟,这是可以的。

因此,从技术上讲,每10分钟最多可以在表mailbox_fql中获得300 * 30个对象。


这些都是在其上的合同需要到位的阈值,而不是硬技术的限制,这是在Mangobug的答案
IGY

并不是真正的“ mailbox_fql的呼叫已超过每600秒300个呼叫的速率。” 意味着这是现实生活中强制执行的硬性限制。这也意味着不同的表格有不同的限制。(这是真的)。
Visgean Skeloru 2012年

6

从facebook文档

用户级别速率限制

此速率限制适用于用户级别的所有API调用(广告api除外)。

速率限制在滑动窗口上实时发生。每个呼叫都被分配一个分数。最大分数为n。用户会根据拨打的电话随时间累积得分。当达到最高分数时,将引发节流错误。错误,代码:17,消息:达到用户请求限制

应用程序级别速率限制

此速率限制在应用程序级别全局应用。排除广告api调用。

限速在滑动窗口上实时发生超过一小时。收集统计信息,包括调用和查询的次数,CPU使用时间,每个应用程序使用的内存。每个资源都有一个乘以给定应用程序的每月活跃用户的限制。当应用使用的资源超出其允许的资源时,将引发错误。错误,代码:4,消息:达到应用程序请求限制

查看此文档 https://developers.facebook.com/docs/reference/ads-api/api-rate-limiting/


如何进行用户级调用和应用级调用的示例在哪里?所有这一切都会通过应用程序ID进行,无论哪个是应用程序级别限制?他们对此文档的了解不是很好。
乔什·贝多

与文档的链接是错误的。正确的一个是developers.facebook.com/docs/graph-api/advanced/rate-limiting
Paiboon Panusbordee

这个答案是关于Marketing API的,而不是关于OP的Graph API。
John Washam

3

根据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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.