Ciao @Bas,
Mi scuso per la risposta tardiva!
Ora sto esaminando nuovamente questo problema poiché abbiamo lanciato un’integrazione Discourse e vogliamo assicurarci di non incontrare problemi relativi ai limiti di frequenza.
L’ho testata con una nuova chiave per assicurarmi che non fosse limitata in alcun modo. Per essere chiari, cosa intendi esattamente con chiave API admin?
Ho creato una chiave con le seguenti impostazioni:
Dice: “La chiave API non ha restrizioni e tutti gli endpoint sono accessibili.”
Sto testando questo effettuando richieste API da una shell Python locale, quindi provengono dallo stesso indirizzo IP. Abbiamo anche riscontrato i limiti di frequenza durante l’esecuzione di uno script sul nostro server. In quel caso, tutte le richieste provenivano dallo stesso indirizzo IP.
Ho confermato che il limite di frequenza viene raggiunto con il seguente codice:
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
# Ottieni solo una porzione di 15 degli argomenti in topic_ids per il test.
topics = asyncio.run(get_topic_post_streams(topic_ids[:15]))
Nota che il parametro max_per_second è commentato, il che non impone limiti al numero di richieste.
Questo viene completato in 2,05 secondi e 2 delle 15 richieste restituiscono 429.
Quando lo eseguo con max_per_second=1, tutto viene completato con successo.
Fammi sapere se posso fornire ulteriori dettagli. Grazie!
