Hi @Bas,
Apologies for the delayed response!
I am now taking a look at this again as we have launched a Discourse integration and we want to make sure we don’t run into any issues related to rate limiting.
I tested it with a new key to make sure it isn’t limited in any way. To be clear, what exactly do you mean by an admin API key?
I created a key with the following settings:
It says, “API key has no restriction and all endpoints are accessible.”
I am testing this by making API requests from a local Python shell, so they are coming from the same IP address. We also ran into the rate limits when running a script on our server. In that case, all requests came from the same IP address.
I confirmed that the rate limit is hit with the following code:
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
# Just get a slice of 15 of the topics in topic_ids for testing.
topics = asyncio.run(get_topic_post_streams(topic_ids[:15]))
Note that the max_per_second parameter is commented out, which results in no limits on the number of requests.
This completes in 2.05 s and 2 out of the 15 requests return 429.
When I run it with max_per_second=1, everything completes successfully.
Let me know if I can provide any more details. Thanks!
