2017-06-13 2 views
3

Ich habe Probleme mit dem Testen meiner App mit der Messenger-Plattform, um die gleiche Nachricht an mehrere Benutzer in einem kleinen Zeitrahmen zu senden. Ich erhalte einen Limit Error: (#613) Calls to this api have exceeded the rate limit.Messenger Platform Limit Fehler (# 613) Anrufe zu diesem API haben das Ratenlimit überschritten

Momentan teste ich das, indem ich dieselbe Nachricht mehrmals an denselben Benutzer (mich) sende; In einem realen Szenario würde die gleiche Nachricht natürlich an verschiedene Benutzer gesendet werden.

Außerdem verwende ich eine Testanwendung einer Live-App, um diese Tests durchzuführen. Soll sich das in der Live-App drastisch verbessern?

Ich brauche wirklich einen schönen Durchsatz Broadcasting Nachrichten, so derzeit mein Setup hat mehrere Threads spawn (50) Senden von Nachrichten parallel, einige von ihnen bereits diese Grenze und Fehler überschritten. Ich habe auch versucht, die Batch-Anfragen, um die Geschwindigkeit der Lieferung Prozess zu verbessern, und an diesem Punkt wird es wirklich unerträglich, mit einer Erfolgsquote von weniger als 50%.

Ich habe über allgemeine Graph API-Ratenbeschränkungen gelesen (https://developers.facebook.com/docs/graph-api/advanced/rate-limiting), und um eine Nachricht zu senden, die Sie ein Seitenzugriffstoken bereitstellen, würde ich erwarten, dass meine App in die Kategorie "Seitenratenbegrenzung" fällt Ich habe zu viele Nachrichten gesendet. In den Fehlerantworten gibt es jedoch keine X-Page-Usage-Header (übrigens keine X-App-Usage).

In der Dokumentation Messenger Platform (https://developers.facebook.com/docs/messenger-platform/send-api-reference#limits) wird folgendes angegeben:

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.

Diese sind entweder nicht besonders hilfreich, da sie den allgemeinen Graph API Grenzen nicht explizit beziehen sich weder eine unterschiedliche Menge angeben von Anfragen, die du ausführen darfst.

Gibt es etwas, das ich vermisse?

+0

_ "Sie sollten Ihr System so aufstellen, dass Sie plötzliche hohe Lastmengen im Laufe der Zeit verteilen und Ihren Durchsatz kontrollieren können, sollten Sie unsere Ratenlimits erreichen" _ - was genau ist das Problem dabei? Sie erkennen, dass Sie an die Grenzen stoßen, da die API diese Fehlermeldung zurückgibt ... also ist es an der Zeit, das Flag $ slowThisShitDown in Ihrer Anwendung zu setzen. – CBroe

+0

Ja, aber das ist immer noch vage varieren.Die Header, die ich erwähnt habe, sind genau so platziert, dass sich Ihre App auf der Grundlage der aktuellen Verwendung des gleitenden Fensters anpassen kann, das Facebook verwendet, um Ihre Graph-API-Anfragen zu begrenzen. Wenn die Sende-API dies nicht zur Verfügung stellt, können Sie Ihre Arbeitslast nicht ordnungsgemäß auf der Grundlage der tatsächlichen Verwendung verteilen. Ich befürchte, dass diese API nicht das gleiche Rate-limiting-Konzept verwendet, aber es wäre schön, einen anderen Wert als "eine hohe Rate von Anrufen" zu haben. – pjpires

+0

Sie können immer einen Dokumentationsfehler einreichen und sie bitten, zu klären, ob etwas unklar ist oder fehlt. Ich bin mir nicht sicher, ob die Sende-API diese Antwort-Header auch senden soll, aber ich stimme zu, dass es nur Sinn ergeben würde. Also würde ich sie fragen, ob es das tun soll und wenn nicht, dass die Dokumentation das zumindest explizit erwähnen sollte. https://developers.facebook.com/bugs/ – CBroe

Antwort

0

Um Ihre Frage zu beantworten, "Soll sich das in der Live-App drastisch verbessern?"

Nein, in diesem Fall gibt es keinen Unterschied zwischen der Test-App und der Live-App. Meine Anwendung ist bereits live und ich habe auch diesen Fehler.

Und ich stimme zu, dass unser Fall auf "Seitenratenbegrenzung" fallen sollte, weil wir ein Page Access Token verwenden. Aber dann erhalte ich keinen Fehler im Zusammenhang mit der Beschränkung auf Seitenebene. Und mein App-Dashboard zeigt auch keinen API-Limit-Treffer an. So ist es nur wirklich die 613 - Stufe anpassen Drosselung alles, was ich habe und FB sagt nur „Kontaktieren Sie Ihren Partner Manager“

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

Ich habe das gelöst. Basierend auf dem, was der FB-Support sagte: "Sie sind für den Aufruf der Send-API zu schnell eingeschränkt", habe ich eine Verzögerung der Send-API-Anfragen mit setTimeout() auf 200ms gesetzt. Mit einer Rate von 10 Nachrichten pro Sekunde stoße ich nicht mehr an das Limit. Kein Fehler 613 überhaupt. Ich werde diese Rate schrittweise erhöhen, um das ideale Szenario zu finden, da Facebook es nicht formell dokumentiert. Wir halten Sie auf dem Laufenden über die Experimente.

+0

Eigentlich, seit dem ersten Post habe ich einen Fehler in Facebooks Issue Tracker geöffnet: https://developers.facebook.com/bugs/379288625806177/. Nicht sehr viel Information von dort hinzuzufügen. Allerdings haben wir jetzt einige Live-Clients mit großen Seiten (~ 10M Likes) und mit weniger als 10k Bot-Benutzern können wir jetzt ungefähr 100 Nachrichten/Sek. Senden. Ich würde also riskieren zu sagen, dass Engagement% auch diese benutzerdefinierte Leveldrosselung beeinflusst. – pjpires

+0

Unsere Seite hat 15M Likes und 90k Abonnenten. 100 Nachrichten/Sekunde sind am Limit. Ich weiß, dass es auf den Seite engagierten Benutzern basiert, und ich glaube, dass wir eine hohe Zahl darin haben. – Carmela

Verwandte Themen