المشاركة الثانية لم تُنشر على سيرفر Discourse

أحاول إرسال أكثر من رسالة واحدة إلى خادم منتدى Discourse الخاص بي باستخدام واجهة برمجة التطبيقات هذه:

رموز جافا الخاصة بي:

public void test() 
		throws UnirestException, JsonMappingException, JsonProcessingException, InterruptedException {
	
	Unirest.config().cookieSpec(CookieSpecs.IGNORE_COOKIES);
	
	Map<String, String> header = new HashMap<>();
	header.put("Content-Type", "application/json");
	header.put("Api-Key", [redacted]);
	header.put("Api-Username", [redacted]);	    
    header.put("Accept", "application/json");

	
	Unirest.post(URL + "/posts.json")
			.headers(header)
			.queryString("title","1st Msg")
			.queryString("raw", "Message 1")
			.queryString("target_recipients", "Kenny")
			.queryString("archetype", "private_message")
			.asJson();

	
   // TimeUnit.SECONDS.sleep(20);
	
	
	Unirest.post(URL + "/posts.json")
			.headers(header)
			.queryString("title","2nd Msg")
			.queryString("raw", "Message 2")
			.queryString("target_recipients", "Kenny")
			.queryString("archetype", "private_message")
			.asJson();
}

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

لاحقًا، اكتشفت أنه إذا وضعت تأخيرًا لمدة 20 ثانية بينهما (أي في التعليق)، فعندئذٍ فقط يمكن استلام كليهما بواسطة الخادم.

ما الخطأ؟

إصداري:

  • Discourse 3.1.0.beta2
  • Java 11
  • unirest-java 3.14.2

مرحباً @lenny1 – لقد قمت بإزالة أجزاء من منشورك لأنها احتوت على معلومات حساسة. يرجى عدم نشر مفاتيح واجهة برمجة التطبيقات (API) أو كلمات المرور وما إلى ذلك علنًا.

إعجابَين (2)

قد تكون تصل إلى حد المعدل. إذا كان هذا هو السبب، فيجب أن يعيد Discourse استجابة 429. قد تكون هناك بعض المعلومات في سجلات أخطاء Discourse الخاصة بك حول هذا الأمر. توجد في Admin / Logs / Error Logs.

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

3 إعجابات

اعتمادًا على الحساب الذي تستخدمه لنشر الرسائل، قد تواجه حدًا أقصى لإنشاء موضوع أو حدًا أقصى لإنشاء منشور.

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

3 إعجابات

شكرا على الرد.
نعم، لقد تلقيت ردًا من Discourse كما يلي:
“أنت تنشئ مواضيع بسرعة كبيرة. يرجى الانتظار 15 ثانية قبل المحاولة مرة أخرى.”
لقد قمت بحل المشكلة عن طريق تغيير حد المعدل في صفحة المسؤول، وضبط إنشاء المنشورات والمواضيع على 0.
الآن سؤالي هو هل من الممكن تعيين حد المعدل لحساب معين فقط؟

لا، لا يمكن تعيين حد المعدل لحساب معين. ومع ذلك، لا يتم تطبيق إعدادات rate limit create topic و rate limit create post على حسابات الموظفين. ربما يمكن أن يساعد ذلك في حالة الاستخدام الخاصة بك.

إعجابَين (2)

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.