خطأ 429 مع واجهة برمجة التطبيقات

مرحبًا بالجميع
لقد قمت بإعداد آلة افتراضية Linux بسيطة في Azure وقمت بتثبيت Discourse. أستخدم هذه الآلة لتطوير بعض سكريبتات الترحيل. أواجه أخطاء HTTP 429 عند تشغيل سكريبتات الترحيل. لقد وجدت منشورًا يشرح كيفية تحديد الحدود في ملف app.yml

تتضمن تكويناتي ما يلي:

كما قمت بتشغيل “./launcher rebuild app” بعد هذه التغييرات.

لكن لا تزال أخطاء 429 تظهر عند حوالي 200 طلب API. ما الذي قد أكون قد فاتني هنا؟

على الأرجح قادمة من NGINX، هل تقوم بدمج قالب NGINX للحد من معدل الطلبات؟

إعجاب واحد (1)

لقد حاولنا إجراء تعديلات في /etc/nginx/conf.d/discourse.conf — فقد قمنا بضبط هذه القيم على أمل عدم الحصول على أخطاء 429 (“عدد الطلبات كبير جدًا”) بعد الآن:

limit_req_zone $binary_remote_addr zone=flood:10m rate=1200r/s;
limit_req_zone $binary_remote_addr zone=bot:10m rate=2000r/m;
limit_req_status 429;
limit_conn_zone $binary_remote_addr zone=connperip:1000m;
[...]

  limit_conn connperip 2000;
  limit_req zone=flood burst=1200 nodelay;
  limit_req zone=bot burst=1000 nodelay;

ثم قمنا بتنفيذ ما يلي:

sv stop nginx
sv start nginx
تحت دليل /var/www/discourse

ومع ذلك، لا نزال نحصل على خطأ 429 (“عدد الطلبات كبير جدًا”) رغم هذه التعديلات.

هل هناك إعداد آخر يجب تغييره؟ يبدو أن الخطأ صادر من Discourse نفسه وليس من NGINX. فقد حصلت على الرسالة التالية:

{"errors":["لقد وصلت إلى الحد الأقصى لعدد المواضيع الجديدة. يرجى الانتظار 15 ساعة قبل المحاولة مرة أخرى."],"error_type":"rate_limit","extras":{"wait_seconds":54224}}

عند محاولة نشر رسائل باستخدام مستخدمين آخرين، يبدو أن الأمر يعمل بشكل جيد.

أتساءل أين يوجد الإعداد لإزالة هذا القيد المتعلق بعدد المواضيع الجديدة لكل مستخدم. لم أجد هذا الإعداد تحت “الإعدادات \ المستخدمين” أو “الإعدادات \ النشر”.

في الواقع، وجدت ما كنت أبحث عنه تحت الإعدادات \ حدود المعدل

إعجاب واحد (1)

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

إعجاب واحد (1)