您好 @Bas,
抱歉回复延迟!
我现在正在重新审视这个问题,因为我们已经集成了 Discourse,并且希望确保不会遇到任何与速率限制相关的问题。
我用一个新密钥进行了测试,以确保它没有任何限制。明确地说,您所说的管理员 API 密钥具体指什么?
我创建了一个具有以下设置的密钥:
它显示,“API 密钥没有限制,所有端点均可访问。”
我正在通过从本地 Python shell 发出 API 请求来测试这一点,因此它们来自同一个 IP 地址。我们在服务器上运行脚本时也遇到了速率限制。在这种情况下,所有请求都来自同一个 IP 地址。
我已确认使用以下代码会达到速率限制:
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
# 只获取 topic_ids 中 15 个主题的一个切片进行测试。
topics = asyncio.run(get_topic_post_streams(topic_ids[:15]))
请注意,max_per_second 参数被注释掉了,这意味着请求数量没有限制。
这在 2.05 秒内完成,并且 15 个请求中有 2 个返回 429。
当我运行 max_per_second=1 时,所有请求都成功完成。
如果您能提供更多详细信息,请告诉我。谢谢!
