Messenger平台限制错误(#613)对此API的呼叫超出了速率限制

时间:2017-06-13 11:50:04

标签: facebook facebook-graph-api facebook-send-api

我无法使用Messenger平台对我的应用进行压力测试,以便在很短的时间内向多个用户发送相同的消息。我收到限制错误:(#613) Calls to this api have exceeded the rate limit.

目前我正在通过多次向同一用户(我)发送相同的消息来测试它;在现实世界的场景中,当然会向几个不同的用户发送相同的消息。

此外,我正在使用实时应用程序的测试应用程序来执行这些测试。这应该在现场应用程序中大幅提升吗?

我真的需要一个很好的吞吐量广播消息,所以目前我的设置有几个线程产生(50)并行发送消息,其中一些已达到此限制并出错。 此外,我尝试了批量请求以提高交付流程的速度,此时它真的变得无法忍受,成功率低于50%。

我已经阅读了一般的图谱API速率限制(https://developers.facebook.com/docs/graph-api/advanced/rate-limiting),并发送了一条提供页面访问令牌的消息,所以我希望我的应用程序属于“页面级别速率限制”类别,如果我发送了太多消息。但是,在错误响应中没有X-Page-Usage标头(顺便说一下,都没有X-App-Usage)。

在Messenger平台文档(https://developers.facebook.com/docs/messenger-platform/send-api-reference#limits)中说明了以下内容:

  

Messenger Platform支持对Send API的高速调用。

     

但是,您应该对系统进行架构设计,以便随着时间的推移分配任何突然的大量负载,并且如果达到我们的速率限制,就能够控制吞吐量。

     

利率限制可以防止恶意行为和糟糕的用户体验。

     

请务必捕获Send API返回的任何错误,包括指示您已达到速率限制的错误。

这些也不是特别有用,因为它们没有明确地引用一般的图谱API限制,也没有指定允许您执行的不同数量的请求。

有什么我可能会遗失的吗?

2 个答案:

答案 0 :(得分:1)

来自Facebook的最新文档清楚地列出了SendAPI每秒250个电话。

  

Send API没有固定的速率限制,但您可以安全地每秒发送250个请求。

此处有更多信息:https://developers.facebook.com/docs/messenger-platform/send-messages#limits

答案 1 :(得分:0)

要回答您的问题,“这应该在实时应用中大幅提升吗?”

不,这个案例的测试应用和实时应用之间没有区别。我的应用程序已经存在,我也遇到了这个错误。

我同意我们的案例应该落到“页面级别限制”,因为我们使用的是页面访问令牌。但是,我没有收到与页面级限制相关的任何错误。我的应用仪表板也没有显示API限制命中。所以我真的只有613 - 自定义级别限制,FB只是说“联系你的合作伙伴经理”

=============================================== ==========================

我已经解决了这个问题。根据FB支持部门所说的“你因速度过快而调用Send API”,我使用setTimeout()将Send API请求的延迟设置为200ms。以每秒10条消息的速度,我不再达到限制。完全没有错误613。我将逐步提高这个速度,以找到理想的情况,因为Facebook不会正式记录它。会告诉你实验的结果。