429-Fehler für benutzerdefinierte Theme-Komponenten beheben

Was möchten Sie erreichen?
Wir haben eine benutzerdefinierte Theme-Komponente (das „Bio Book"), die seit kurzem 429-Fehler zurückgibt. Dies begann am 26. November. Davor funktionierte es einwandfrei.

Das Bio Book manipuliert die Route /u, um Benutzerinformationen schöner darzustellen. Dafür forderte es zudem zusätzliche Benutzerinformationen aus der .json-Datei jedes Benutzers an. Das Bio Book nutzte ein Lazy-Loading, um 429-Fehler zu vermeiden, doch das funktioniert seit vier Tagen nicht mehr – ich bin mir nicht sicher, was vor vier Tagen passiert ist, aber das Discourse-Team hat bestätigt, dass keine Änderungen an den Rate Limits vorgenommen wurden.

Das Repository für den Code befindet sich unter: GitHub - sethgodin/discourse_biobook: Bio Book feature for Discourse

Der Entwickler, der die Komponente ursprünglich für uns erstellt hat, steht für diese Korrektur nicht zur Verfügung. Daher benötigen wir jemanden, der in den bestehenden Code einsteigen und die Fehler beheben kann, damit die benutzerdefinierte Theme-Komponente wieder funktioniert.

Wir möchten keine neuen Funktionen, keine Änderungen an bestehenden Funktionen und auch keine Refaktorierung. Wir wollen lediglich die 429-Fehler beheben und das Bio Book wieder in seinen vorherigen Funktionszustand versetzen.

Bis wann muss es erledigt sein?
Wir wünschen die Fertigstellung bis Montag, den 6. Januar 2020.

Wie hoch ist Ihr Budget in USD für diese Aufgabe?
Unser Budget beträgt 250 $ für die Behebung der 429-Fehler.

Wir gehen davon aus, dass die Behebung der 429-Fehler alle zugrunde liegenden Probleme löst. Falls dies nicht der Fall ist, teilen Sie uns dies bitte mit, und wir werden unser Budget entsprechend anpassen.

1 „Gefällt mir“

Wie hast du Discourse installiert?

Werden die IP-Adressen der Benutzer korrekt protokolliert?

1 „Gefällt mir“

Wir werden von Discourse auf einem Business-Plan gehostet.

Ich nehme das an, bin mir aber nicht sicher. Wie kann ich das herausfinden?

1 „Gefällt mir“

Es lädt also in Gruppen von 50 Benutzern per lazy loading, und der Standardwert für max_reqs_per_ip_per_10_seconds ist ebenfalls auf 50 gesetzt. Einschließlich der Hauptseite führt dieser Code mindestens 51 Anfragen aus (in weniger als 10 Sekunden), wodurch das Ratenlimit überschritten wird.

Mit anderen Worten: Ich verstehe nicht, wie das vorher funktionieren konnte…?

3 „Gefällt mir“

Dann funktioniert es korrekt. Das ist schade. Es wäre viel einfacher gewesen, ein Konfigurationsproblem zu beheben als das, was Richard beschreibt.

Ich bin mir auch nicht sicher, wie das passiert ist, aber es funktionierte über ein Jahr lang einwandfrei. Bis vor vier Tagen hatten wir noch nie mit einem 429-Fehler zu tun.

Wir haben letzte Woche global für alle Discourse-Instanzen weltweit das Rate-Limit aktiviert. Nächste Woche können wir das Plugin untersuchen und prüfen, ob es eine sinnvolle Batch-API gibt, die es stattdessen nutzen kann.

6 „Gefällt mir“

Wow, ich bin vor kurzem aus einem sehr ähnlichen Grund auf genau dieses Problem gestoßen (Abrufen von Benutzerdaten zur Anzeige von Karten!). Ich habe vorübergehend einen kleinen Hack implementiert, um es zu beheben, und bin hierher ins Forum gekommen, um herauszufinden, ob es eine Batch-API gibt, die ich nicht kenne… oder um zu lernen, wie man so eine Route implementiert.

1 „Gefällt mir“

@sam Ahh… das ist wirklich gut zu wissen. Vielen Dank für den Kontext!

1 „Gefällt mir“

Entschuldigung, Alex, ich habe dich letzte Woche mit meiner Antwort im Unrecht gelassen. Mir war nicht klar, dass wir diese Änderung schon vor einiger Zeit nicht bereitgestellt hatten.

4 „Gefällt mir“

Alles gut, @HAWK, danke für die Rückmeldung.

Ich warte mit diesem Projekt noch etwas ab, bis ich von @sam und dem Team höre, ob es eine vernünftige Batch-API gibt, die wir stattdessen nutzen können.

Danke an alle.

1 „Gefällt mir“

Hallo Alex,

ich habe mir gerade die Theme-Komponente angesehen. Sie führt tatsächlich zu einer enormen Arbeitslast und einer großen Anzahl von Anforderungen. Die von uns implementierte Ratenbegrenzung ist hier als Immunsystem absolut richtig.

Wir werden das in Ordnung bringen, aber es könnte ein oder zwei Wochen dauern, bis alles erledigt ist.

Meiner Einschätzung nach liegt das Hauptproblem darin, dass das Verzeichnis nun alle Informationen zurückgeben muss, die Benutzerkarten enthalten. Das Tückische daran ist, dass Theme-Komponenten keine Möglichkeit haben, den Server zu ändern. Daher müssen wir eine Änderung an der Kern-API vornehmen, die es uns ermöglicht, Benutzerkarten für mehrere Personen auf einmal abzurufen.

Wir halten Sie auf dem Laufenden, sobald wir Fortschritte erzielen. Kurze Anmerkung zum Budget: Wir erledigen diese Aufgabe kostenlos, schätzen aber, dass etwa zwei Arbeitstage für die Reparatur nötig sind – das liegt weit über dem ursprünglichen Budget. Auf den ersten Blick scheint es einfach, erfordert jedoch sehr komplexe interne Änderungen.

8 „Gefällt mir“

Vielen Dank, @sam und Team, das ist unglaublich hilfreich. Die Änderungen an der Kern-API werden uns und vermutlich auch anderen Discourse-Nutzern sehr zugutekommen. Ich freue mich, dass wir das Bio Book nutzen und es sinnvoller gestalten können. Ein bis zwei Wochen passen für uns gut.

Ich verstehe Ihre Bedenken bezüglich des anfänglichen Budgets und des Umfangs der Korrektur. Es ist außerordentlich großzügig von Ihnen, dies kostenlos zu übernehmen. Vielen Dank.

Wir warten auf weitere Informationen.

4 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.