Wie umgehe ich Throttling Limits mit Admin API Key?

Hallo @Bas,

Entschuldigen Sie die verspätete Antwort!

Ich schaue mir das jetzt noch einmal an, da wir eine Discourse-Integration gestartet haben und sicherstellen wollen, dass wir keine Probleme mit Ratenbegrenzungen bekommen.

Ich habe es mit einem neuen Schlüssel getestet, um sicherzugehen, dass er in keiner Weise eingeschränkt ist. Um genau zu sein, was meinen Sie genau mit einem Admin-API-Schlüssel?

Ich habe einen Schlüssel mit den folgenden Einstellungen erstellt:

Dort steht: „API-Schlüssel hat keine Einschränkung und alle Endpunkte sind zugänglich.“

Ich teste dies, indem ich API-Anfragen von einer lokalen Python-Shell aus sende, sodass sie von derselben IP-Adresse kommen. Wir sind auch auf Ratenbegrenzungen gestoßen, als wir ein Skript auf unserem Server ausgeführt haben. In diesem Fall kamen alle Anfragen von derselben IP-Adresse.

Ich habe bestätigt, dass die Ratenbegrenzung mit dem folgenden Code erreicht wird:

async def get_topic_post_stream(topic_id):
    url = f"{DISCOURSE_URL}/t/{topic_id}"
    async with httpx.AsyncClient(headers=HEADERS) as client:
        topic = await client.get(url)
    return topic.status_code


async def get_topic_post_streams(topic_ids):
    tasks = [functools.partial(get_topic_post_stream, topic_id) for topic_id in topic_ids]
    topics = await aiometer.run_all(
        tasks,
        # max_per_second=1,
        )
    return topics

# Holen Sie sich nur einen Ausschnitt von 15 der Themen in topic_ids zum Testen.
topics = asyncio.run(get_topic_post_streams(topic_ids[:15]))

Beachten Sie, dass der Parameter max_per_second auskommentiert ist, was zu keinen Einschränkungen bei der Anzahl der Anfragen führt.

Dies ist in 2,05 Sekunden abgeschlossen und 2 der 15 Anfragen geben 429 zurück.

Wenn ich es mit max_per_second=1 ausführe, ist alles erfolgreich abgeschlossen.

Lassen Sie mich wissen, wenn ich weitere Details angeben kann. Danke!