7

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

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

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

我真的需要一个很好的吞吐量广播消息,所以目前我的设置有几个线程产生(50)并行发送消息,其中一些已经达到这个限制并且出错了。另外,我尝试了 Batch Requests 来提高交付过程的速度,到那时真的变得难以忍受,成功率不到 50%。

我已阅读有关一般 Graph 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 平台支持对发送 API 的高调用率。

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

设置了速率限制以防止恶意行为和糟糕的用户体验。

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

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

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

4

2 回答 2

0

要回答您的问题,“这应该在实时应用程序中大幅改进吗?”

不,在这种情况下,测试应用程序和实时应用程序之间没有区别。我的应用程序已经上线,我也遇到了这个错误。

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

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

我已经解决了这个问题。根据 FB 支持人员所说的“您因调用发送 API 太快而受到速率限制”,我使用 setTimeout() 将发送 API 请求的延迟设置为 200 毫秒。以每秒 10 条消息的速度,我不再达到限制。根本没有错误613。由于 Facebook 不会正式记录它,我会逐渐提高这个速度以找到理想的场景。将让您随时了解实验。

于 2017-08-23T12:52:14.920 回答
0

Facebook 的最新文档清楚地列出了 SendAPI 每秒 250 次调用。

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

更多信息在这里:https ://developers.facebook.com/docs/messenger-platform/send-messages#limits

于 2018-04-06T09:46:20.680 回答