2016-08-05 13 views
0

Ich habe versucht, engage with the API team via Twitter aber ich habe keine Antwort und Entwicklung ist das Schleifen zum Stillstand hier ...erhalte 429 (zu viele Anfragen) Drosselung Fehler

Kurz ich erhalte einen 429 hatte bei der Entwicklung gegen die OneNote-API, ich weiß, dass this suggests I'm hitting the API too hard, aber ich bin nicht.

Im schlimmsten Fall mache ich vielleicht 1 oder 2 Anfragen pro Minute, manuell von mir aufgerufen, während ich mich entwickle. Manchmal lasse ich 10-15 Minuten zwischen den Anrufen, manchmal funktioniert das, manchmal nicht.

Ich habe in den letzten Tagen an einem bestimmten Problem gearbeitet. In meinem Code mache ich einen Anruf alle Notebooks zu erhalten, Abschnitte & Abschnittsgruppen in einer einzigen Abfrage (gefiltert, um nur zurückgeben Daten von bestimmten Notebooks)

ich dann einen zweiten Anruf tätigen, um alle aktualisierten Seiten für diese Notebooks zu bekommen. Ich habe an der Filter-Saite geprobt, damit dieser zweite Anruf funktioniert (was ich jetzt glaube), aber 9 mal von 10 bekomme ich den 429 bei diesem zweiten API-Anruf.

Gibt es eine Möglichkeit, mein Benutzerkonto auf die weiße Liste zu setzen?

FWIW das ist meine zweite Abfrage (die Räume, die normalerweise codiert werden):

/me/notes/pages?count=true&top=100&expand=parentNotebook,parentSection 
&filter=(parentNotebook/id eq '{GUID}' or parentNotebook/id eq '{GUID}' or parentNotebook/id eq '{GUID}') and lastModifiedTime gt 2016-08-05T11:34:09.000Z 

Dies funktioniert, wie ich erwarten würde, das Datum Klausel jetzt funktioniert, aber ich kann nur in sehr seltenen Fällen testen, wie Ich bekomme die 429.

Übrigens, wenn ich meinen zweiten Filter über die API-Konsole laufen lasse ich jedes Mal eine 504 "Proxy Request Timeout". Dies ist, seit ich die Klammern um das Notebook-Prädikat hinzugefügt habe.

Also bin ich ziemlich unfähig, die Entwicklung fortzusetzen, wie löse ich das bitte?

Antwort

0

Als kurzfristige Abhilfe, versuchen Sie bitte folgendes:

Statt einer Abfrage:

/me/notes/pages?count=true&top=100&expand=parentNotebook,parentSection&filter=(parentNotebook/id eq '{GUID}' or parentNotebook/id eq '{GUID}' or parentNotebook/id eq '{GUID}') and lastModifiedTime gt 2016-08-05T11:34:09.000Z 

Entfernen Sie die "count = true" (spielst Du das?) Und lassen Sie nur ein parentNotebookId Filter. Die Ergebnisse werden standardmäßig von LastModifiedTime absteigend sortiert (neueste zuerst).

+0

Danke. Ich markiere dies als Antwort, da es mein unmittelbares Problem zu lösen scheint. Ich habe das in der letzten Stunde mehrere Male ohne 429 ausgeführt. Ich verwende aber immer noch das lastModifiedTime-Prädikat –

0

Nur eine Ahnung: können Sie versuchen, den zweiten Aufruf (um aktualisierte Seiten zu erhalten) in separate HTTP-Anfragen aufzuteilen (einen für jede Notebook-ID)?

Auch wenn Sie möchten, sind Update-Benachrichtigungen, Webhooks könnte der bessere Weg zu gehen.

Schließlich entschuldigt sich für die Stille auf Twitter.

+0

ich getan habe, wie Sie @DipakBoyed schlagen und das gleiche Problem auftritt: '/api/v1.0/me/notes/pages? count = true & oben = 100 & expand = parentNotebook, parentSection & filter = parentNotebook/id eq '{GUID}'% 20und% 20lastModifiedTime% 20gt% 202016-08-06T20: 39: 35.000Z' Nach 3 oder 4 Aufrufen der API heute Morgen mit dieser Frage treffe ich wieder die # 429 :( –

+0

Dies ist immer noch ein echtes Problem für mich. Ich kann nichts anderes tun. Sie blockieren mich auf diese Anfrage. Alle anderen sind in Ordnung. –

+0

Hallo wieder! Leider stoßen Sie in unserer GET Pages API auf einen schlechten Fehler (wenn Sie mit Filtern und zusätzlichen Abfrageparametern aufgerufen werden) Rapper Job des Anwendens der Filter beim Aufruf unseres Indexierungsdienstes (der uns wiederum drosselt). Wir haben dieses Problem jetzt erkannt und arbeiten an 1. einer langfristigen Lösung sowie 2. einer kurzfristigen Problemumgehung. Wenn wir eine vernünftige kurzfristige Lösung finden, werden wir weitere Details veröffentlichen. – DipakBoyed

0

Leider schlagen Sie einen schlechten Fehler in unserer GET Pages API (wenn mit Filtern und zusätzlichen Abfrageparameter aufgerufen). Effektiv machen wir einen beschissenen Job, wenn wir die Filter anwenden, wenn wir unseren Indizierungsservice aufrufen (der uns wiederum drosselt). Wir haben festgestellt, dass dies ein andauerndes Problem ist, bei dem Anrufer besonders unter hoher Last gedrosselt werden.

Kurzfristige Problemumgehung: Wir beschäftigen uns mit unserer Kapazität und halten die Begrenzungslimits unseres Partner-Indexierungsdienstes vorübergehend ein, während wir an der langfristigen Lösung arbeiten. Hoffentlich führt dies dazu, dass weniger 429s für Sie vorwärts gehen.

Als eine zukunftssichere Lösung möchte ich Sie auch ermutigen, @ Jorge's vorgeschlagene Antwort zu untersuchen. (Entfernen Sie die Zählung = true Abfrage param und Filter nur auf 1 parentNotebookId (keine lastModifiedTime Filterung)

Verwandte Themen