Messenger 平台限制错误 (#613) 对此 api 的调用已超出速率限制

Messenger Platform Limit Error (#613) Calls to this api have exceeded the rate limit

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

目前我正在通过多次向同一个用户(我)发送同一条消息来对此进行测试;在现实世界中,同一条消息当然会发送给多个不同的用户。

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

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

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

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

Messenger Platform supports a high rate of calls to the Send API.

However, you should architect your system such that you distribute any sudden high amounts of load over time and are able to control your throughput should you hit our rate limits.

Rate limits are in place to prevent malicious behavior and poor user experiences.

Be sure to catch any errors returned by the Send API including the one indicating that you've reached the rate limit.

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

有什么我可能遗漏的吗?

为了回答你的问题,"Is this supposed to drastically improve in the live app?"

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

而且我同意我们的案例应该落到 "Page-Level Rate Limiting" 因为我们使用的是页面访问令牌。但是,我没有收到任何与页面级别限制相关的错误。我的应用仪表板也没有显示 API 限制命中。所以这真的是 613 - 自定义级别节流,这就是我所拥有的,FB 只是说 "Contact your Partner Manager"

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

我已经解决了这个问题。根据 FB 支持所说 "You are being rate-limited for calling the Send API too fast",我使用 setTimeout() 将发送 API 请求的延迟设置为 200 毫秒。以每秒 10 条消息的速度,我不再达到极限了。根本没有错误613。由于 Facebook 不会正式记录它,因此我将逐渐提高这个速率以找到理想的场景。会及时通知您实验。

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

The Send API does not have a fixed rate limit, but you can safely send 250 requests per second.

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