Olá @Bas,
Peço desculpas pela resposta tardia!
Estou analisando isso novamente, pois lançamos uma integração do Discourse e queremos ter certeza de que não encontraremos nenhum problema relacionado à limitação de taxa.
Eu testei com uma nova chave para garantir que ela não seja limitada de forma alguma. Para ser claro, o que exatamente você quer dizer com uma chave de API de administrador?
Criei uma chave com as seguintes configurações:
Diz: “A chave de API não tem restrição e todos os endpoints são acessíveis.”
Estou testando isso fazendo requisições de API de um shell Python local, então elas vêm do mesmo endereço IP. Também encontramos os limites de taxa ao executar um script em nosso servidor. Nesse caso, todas as requisições vieram do mesmo endereço IP.
Confirmei que o limite de taxa é atingido com o seguinte 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
# Apenas obtenha uma fatia de 15 dos tópicos em topic_ids para teste.
topics = asyncio.run(get_topic_post_streams(topic_ids[:15]))
Note que o parâmetro max_per_second está comentado, o que resulta em nenhum limite no número de requisições.
Isso é concluído em 2,05 s e 2 das 15 requisições retornam 429.
Quando eu o executo com max_per_second=1, tudo é concluído com sucesso.
Me avise se posso fornecer mais detalhes. Obrigado!
