استيراد الأسئلة دفعة واحدة

مرحبًا

لدي أسئلتي ورسائلي الردية بتنسيق JSON:

نموذج مستند JSON هنا
{
    "id": "x017c4h221p7T8sboHglB-7kQ==",
    "created": "2018-05-09T20:13:23Z",
    "title": "خطأ في إدخال/إخراج Docker",
    "body": "<p>مرحبًا ستيفان، أجد نفسي مضطرًا لإعادة تشغيل Docker لتشغيل Kafka في كل مرة أغادر فيها النظام، حيث يحدث خطأ في ربط منفذ TCP. فهمي هو أنه عندما أوقف خدمات Kafka وأغادر، يتم تحرير المنفذ.</p>",
    "course": {
        "_class": "course",
        "id": "x0190RCkGpZ6FMe4CPAF8aOoQ==",
        "title": "سلسلة Apache Kafka - تعلم Apache Kafka للمبتدئين v2",
        "url": "/apache-kafka/"
    },
    "replies": [{
            "_class": "answer",
            "id": "x01Qx2rNaX48kxP4NFFSSCK7g==",
            "created": "2018-05-10T07:04:10Z",
            "user": {
                "_class": "user",
                "id": "x01N-Fup_OULjTEtHPLwc8JSQ==",
                "name": "إيفان",
                "locale": "en_US"
            },
            "is_top_answer": null,
            "body": "<p>مرحبًا نانديني،</p><p>هل يمكنك التوضيح بمزيد من التفاصيل ما هي مشكلتك؟ إذا قمت بإيقاف خدمات Kafka، فسيتم بالطبع تحرير المنافذ التي تستخدمها Kafka.</p><p>مع خالص تحياتي،</p><p>إيفان</p>",
        },
        {
            "_class": "answer",
            "id": "x01bLG2QPhyLwZ_RJsbMge16A==",
            "created": "2018-05-10T20:45:39Z",
            "user": {
                "_class": "user",
                "id": "x01oX4mwhRQoLXKuhHXDHg3zg==",
                "name": "نانديني",
                "locale": "en_US"
            },
            "is_top_answer": null,
            "body": "<p>أوقف خدمات Kafka وعندما أعيد التشغيل، لا يتم تحرير منافذ Docker وأحصل على خطأ في ربط TCP على المنفذين 2181 و3030</p>",
            "is_upvoted": false,
            "num_upvotes": 0
        },
        {
            "_class": "answer",
            "id": "x01yL8D1-inVZE3njAo08-uMw==",
            "created": "2018-05-11T00:32:46Z",
            "user": {
                "_class": "user",
                "id": "x01lNfqEyIqBf47SM76dxq0rw==",
                "name": "ستيفان ماريك",
                "locale": "en_US"
            },
            "is_top_answer": true,
            "body": "<p>أعد تشغيل محرك Docker إذا أمكن، أو أعد تشغيل جهاز الكمبيوتر الخاص بك. راجع ما إذا كان ذلك يساعد!</p><p>بخلاف ذلك، هناك شيء يعمل على المنفذ 2181. يرجى مراجعة محاضرة الأسئلة الشائعة (المحاضرة 22) حيث واجه العديد من الطلاب هذه المشكلات من قبل</p>",
            "is_upvoted": false,
            "num_upvotes": 0
        }
    ],
    "user": {
        "_class": "user",
        "id": "x01oX4mwhRQoLXKuhHXDHg3zg==",
        "name": "نانديني",
        "locale": "en_US"
    }
}

لقد طورت سكريبت Python للاتصال بواجهة برمجة التطبيقات (API)، لكنني أواجه مجموعة من الأخطاء المتعلقة بالحد من المعدل (throttling)…:

لقد قمت بهذا الإجراء عددًا كبيرًا جدًا من المرات. يرجى الانتظار X ثانية قبل المحاولة مرة أخرى.

يجب علي استيراد حوالي 3000 سؤال في المجموع (إلى جانب متوسط ردود يبلغ ردّين لكل سؤال)، لذا أشعر أن مسار واجهة برمجة التطبيقات قد يكون بطيئًا جدًا.

هل توجد طريقة لتعطيل مشكلة الحد من معدل واجهة برمجة التطبيقات هذه؟

هل توجد طريقة أخرى لاستيراد بياناتي؟ فهي مرتبطة فقط بمستخدمين اثنين (لذا لا حاجة لإنشاء مستخدمين). كما أنني أستخدم منصة Discourse مستضافة، لذا لا أعرف ما إذا كان لدي وصول مباشر إلى قاعدة البيانات الأساسية.

أنا مستعد لمشاركة كود Python الخاص بي، أو فتح مكافأة إذا تطلب الأمر جهدًا كبيرًا.

Make sure the user performing the actions via the API key has staff privileges, even if only temporary.

That will help with some of the rate limits.

An easy approach I used was to add
sleep(0.7)
inside the Ruby loop. (you may need to tweak that)

For 3000 requests it would take 35 minutes to complete. A bit painful, but for a once off I don’t think it would be all that bad.

5 إعجابات

I have admin permissions (using my own API key) and I still get a throttle it seems every 60 API calls. I tried to change things in settings > Rate limits but doesn’t seem to help

3 إعجابات

أنا أيضًا أواجه نفس المشكلة.

إذا أضفت تأخيرًا اصطناعيًا مدته ثانية واحدة، فلا يحدث ذلك بعد الآن.

حسنًا، يمكن تجاوز حد 60 طلبًا في الدقيقة على النحو التالي:

على الخادم

cd /var/discourse

افتح ملف containers/app.yml في محرر النصوص (أستخدم vi)، وأضف السطر التالي إلى قسم env

DISCOURSE_MAX_ADMIN_API_REQS_PER_KEY_PER_MINUTE : 6000

ثم احفظ الملف.

أعد البناء (إعادة التشغيل فقط لن يكون لها أي تأثير)
./launcher rebuild app

إعجابَين (2)