كيفية تجنب قيود المعدل باستخدام مفتاح API إداري؟

مرحباً @Bas،

أعتذر عن التأخر في الرد!

أنا الآن ألقي نظرة على هذا مرة أخرى حيث أطلقنا تكاملاً مع Discourse ونريد التأكد من عدم مواجهة أي مشاكل متعلقة بتحديد المعدل.

لقد اختبرته بمفتاح جديد للتأكد من أنه غير مقيد بأي شكل من الأشكال. للتوضيح، ماذا تقصد بالضبط بمفتاح API للمسؤول؟

لقد أنشأت مفتاحًا بالإعدادات التالية:

يقول، “مفتاح API ليس له قيود وجميع نقاط النهاية متاحة.”

أنا أختبر هذا عن طريق إجراء طلبات API من قشرة Python محلية، لذا فهي تأتي من نفس عنوان 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

# فقط احصل على شريحة من 15 من المواضيع في topic_ids للاختبار.
topics = asyncio.run(get_topic_post_streams(topic_ids[:15]))

لاحظ أن المعلمة max_per_second معطلة، مما يؤدي إلى عدم وجود قيود على عدد الطلبات.

يكتمل هذا في 2.05 ثانية ويُرجع 2 من أصل 15 طلبًا 429.

عندما أقوم بتشغيله مع max_per_second=1، يكتمل كل شيء بنجاح.

أخبرني إذا كان بإمكاني تقديم أي تفاصيل إضافية. شكرًا!