¿Cómo evitar los límites de limitación con la clave API de administrador?

Hola @Bas,

¡Disculpas por la respuesta tardía!

Ahora estoy revisando esto nuevamente, ya que hemos lanzado una integración de Discourse y queremos asegurarnos de no encontrar ningún problema relacionado con los límites de velocidad.

Lo probé con una nueva clave para asegurarme de que no esté limitada de ninguna manera. Para ser claro, ¿qué significa exactamente una clave de API de administrador?

Creé una clave con la siguiente configuración:

Dice: “La clave de API no tiene restricciones y todos los puntos finales son accesibles”.

Estoy probando esto haciendo solicitudes a la API desde un shell de Python local, por lo que provienen de la misma dirección IP. También nos encontramos con los límites de velocidad al ejecutar un script en nuestro servidor. En ese caso, todas las solicitudes provenían de la misma dirección IP.

Confirmé que el límite de velocidad se alcanza con el siguiente código:

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

# Solo obtén una porción de 15 de los temas en topic_ids para probar.
topics = asyncio.run(get_topic_post_streams(topic_ids[:15]))

Tenga en cuenta que el parámetro max_per_second está comentado, lo que resulta en que no haya límites en el número de solicitudes.

Esto se completa en 2.05 s y 2 de las 15 solicitudes devuelven 429.

Cuando lo ejecuto con max_per_second=1, todo se completa con éxito.

Avísame si puedo proporcionar más detalles. ¡Gracias!