• Aktuell
    • Tags
    • Beliebt
    • Benutzer
    • Gruppen
    • Suche
    • Registrieren
    • Anmelden

    REST API "Too many requests"

    ChurchTools Schnittstellen
    3
    8
    362
    Lade mehr Beiträge
    • Älteste zuerst
    • Neuste zuerst
    • Meiste Stimmen
    Antworten
    • In einem neuen Thema antworten
    Anmelden zum Antworten
    Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
    • aschildA
      aschild
      zuletzt editiert von

      Hallo Zusammen,

      wir haben einen cron job, der den Veranstaltungsort anhand der gebuchten Ressourcen ergänzt/setzt.
      Wenn wir den cron job nun für die nächsten 366 Tage (Schaljahr 😉 lafen lassen, dann kommt vereinzelt mal die Fehlermeldung

      "Too many requests"

      Ist das Limit irgendwo dokumentiert und wie wir unterhalb dieser Schwelle bleiben können?

      3.x kein Selfhosting mehr

      davidschillingD 1 Antwort Letzte Antwort Antworten Zitieren 0
      • davidschillingD
        davidschilling ChurchToolsMitarbeiter @aschild
        zuletzt editiert von

        @aschild

        Es kommt der Status Code 429 zurück. Wenn der kommt weiß man, dass man etwas warten muss um weitere Requests zu machen.
        Man könnte die Implementierung also z.b. so machen, dass man bei einem 429 60 Sekunden wartet und dann den Request nochmal macht.

        Aktuell erlauben wir 600 Requests pro Minute pro IP. Das kann sich aber zukünftig auch noch verringern.

        Um das zu erreichen scheint ihr schon recht viele Requests zu machen. Vielleicht lassen sich die Anfragen auch noch optimieren.

        aschildA 1 Antwort Letzte Antwort Antworten Zitieren 0
        • aschildA
          aschild @davidschilling
          zuletzt editiert von aschild

          @davidschilling
          Ok, wäre gut wenn irgendwo die limits stehen würden und auch was für eine Retryzeit Sinn macht.

          Bei uns ist das normalerweise kein Problem, ausser wir müssen den CRON Trigger wegen updates über allle Einträge laufen lassen.
          Aber wir müssen halt schon alle Kalendereinträge des nächsten Jahres nach Veränderungen Abklappern...

          Was von seiten Churchtool zum vermeinden solcher Themen machen könntet 😉 :

          Sicher mal das hier, dann müssen wir nicht mehr pollen:
          https://forum.church.tools/topic/9712/webhooks-implementieren

          Und der hier, da könnte man direkt mindestens die EventID zurückgeben.
          Ressourcen wären auch schön, aber hier haben wir das grundsätzliche REST Problem mit dem Over-/Underfetch

          https://forum.church.tools/topic/9859/api-endpoint-für-verknüpfung-zwischen-calendar-appointment-und-event
          https://forum.church.tools/topic/9747/gebuchte-ressourcen-via-rest-api-zu-kalendereintrag-erhalten

          3.x kein Selfhosting mehr

          davidschillingD 1 Antwort Letzte Antwort Antworten Zitieren 0
          • davidschillingD
            davidschilling ChurchToolsMitarbeiter @aschild
            zuletzt editiert von davidschilling

            @aschild Was passiert denn bei diesem Cron Trigger. Wodurch werden diese vielen Anfragen gemacht? Vielleicht gibt es ja schon bessere Möglichkeiten die Api zu nutzen.

            Der Forenbeitrag zur Termin und Events Verknüpfung scheint mir vor Allem Verständnisfragen zu enthalten, die geklärt wurden. Was wäre da noch der Verbesserungsvorschlag?

            Der Forenbeitrag zu den Ressourcen sieht für mich ähnlich aus. Auch da die Frage was wir da verbessern könnten?

            aschildA 1 Antwort Letzte Antwort Antworten Zitieren 0
            • aschildA
              aschild @davidschilling
              zuletzt editiert von

              @davidschilling Im cron trigger passiert folgendes:

              • Es klappert alle Kalendereinträge aus allen Gemeindekalendern für die nächsten 400 Tage ab.
              • Dann geht es jeden Eintrag durch und schaut ob sich Text/Daten/Bild/Location/Eventsachen zu dem Eintrag gegenüber dem Eintrag auf der öffentlichen Webseite verändert haben.
              • Wenn der Eintrag nicht gefunden wird oder er in Churchtool verändert wurde, dann wird die Webseite nachgeführt
              • Auf der Clientseite führen wir auch eine Mappingtabelle zwischen Webseiteneintrag und CT-Kalendereintrag um in CT entfernte Kalenereinträge auch auf der Webseite löschen zu können

              Wie gesagt, eigentlich könnte man das ganz gezielt für einen einzelnen Eintrag machen, wenn denn CT uns via Webhook über das Create/Update/Delete eines Eintrages informieren würde 😉

              https://github.com/a-schild/churchtools-wp-calendarsync/blob/main/churchtools-dosync.php
              und das Resultat:
              https://ref-nidau.ch/alleanlaesse/

              3.x kein Selfhosting mehr

              B davidschillingD 2 Antworten Letzte Antwort Antworten Zitieren 0
              • B
                bwl21 @aschild
                zuletzt editiert von

                @aschild sowas ähnliches machen wir auch - nur bei weiterm nicht so schön wir ihr 🙂 (https://www.bruedergemeinde-korntal.de/neuigkeiten/termine.html?month=202312)

                Ich habe neulich unseren Importer umgestellt, dass er das ganze mit 5 requests hinbekommt, egal wieviele Termine wir holen.

                Früher hab ich die auch einzeln abgeklappert ....

                du kannst in den event masterdata, den calendars/$calendarId/appointments, und den Events alles abgreifen, was du brauchst.

                Ich habe mein Script nicht in github - es ist nicht allgemein verwendbar, weil es contao-Events erzeugt.

                1 Antwort Letzte Antwort Antworten Zitieren 0
                • davidschillingD
                  davidschilling ChurchToolsMitarbeiter @aschild
                  zuletzt editiert von

                  @aschild Was du beschreibst kannst du mit insgesamt 2 Requests machen.

                  1. Request alle Termine für die nächsten 400 Tage abholen.
                  2. Request alle Events für die nächsten 400 Tage abholen.

                  Dann musst du nur die Events und Termine im Client matchen.

                  aschildA 1 Antwort Letzte Antwort Antworten Zitieren 0
                  • aschildA
                    aschild @davidschilling
                    zuletzt editiert von

                    @davidschilling Hmmm...
                    da sehe ich jetzt gerade nicht wie das funktionieren soll.

                    Im /calendars/appointments fehlen mir die Ressourcen
                    Im /calendars/{id}/appointsments hier auch

                    3.x kein Selfhosting mehr

                    1 Antwort Letzte Antwort Antworten Zitieren 0
                    • Erster Beitrag
                      Letzter Beitrag