Basさん、こんにちは。
返信が遅くなり申し訳ありません。
Discourse連携をローンチしたため、レート制限に関連する問題が発生しないように、現在再度確認しています。
制限されていないことを確認するために、新しいキーでテストしました。明確にするために、管理者APIキーとは具体的に何を意味しますか?
以下の設定でキーを作成しました。
「APIキーには制限がなく、すべてのエンドポイントにアクセスできます。」と表示されています。
ローカルのPythonシェルから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 で実行すると、すべて正常に完了します。
さらに詳細が必要な場合はお知らせください。ありがとうございます。
