اختفاء تكاملات يوتيوب

I have a client for whom embedded youtube videos are missing. They appear in composer’s preview, but when the messages are saved, they disappear. They are working fine in try.discourse.org. I tried whitelisting youtu.be and changing the URL to a youtube.com url too. Neither solved the problem.

The site is running v1.6.0.beta11 +141

Have you tried reaching YouTube from your client’s server?

It seems that the problem was that recent Discourse updates have caused my DOI resolver plugin to muck things up. (I disabled a couple other things too, but it was definitely some plugin. . . )

هل واجه أي شخص مشكلة عند إعادة معالجة المنشورات تؤدي إلى خطأ 429 (طلبات كثيرة جدًا) من youtube.com؟

[1] pry(main)> posts = Post.where("raw like '%youtube%'").count
=> 5237

:thinking:

لقد واجهت هذا أيضًا، إنه حظر مؤقت للعنوان IP (ساعة واحدة، أعتقد)، وتفشل جميع صناديق يوتيوب المدمجة للمواضيع المعاد طهوها خلال هذا الوقت.

ربما يجب تنفيذ آلية لمنع أكثر من x طلبًا إلى يوتيوب (YouTube) في الساعة عند إعادة الطهي؟

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

من داخل الخادم والحاوية، يمكنني استخدام CURL للوصول إلى YouTube، فكيف يمكنني التأكد من أن السبب هو حظر مؤقت لعنوان IP؟

تعديل: يمكنني تأكيد أن إعادة البناء (التطبيق) ولا إعادة التشغيل لا يؤثران على هذه المشكلة.

تعديل 2: من خلال البحث، رأيت أن @jomaxro علّق هنا أن أشياء مثل CloudFlare يمكن أن تؤثر على الصناديق… هل يمكن لشبكة CDN أن تؤثر على صندوق واحد فقط؟ حاولت وضعها في وضع التطوير ولكن لم يحدث أي تغيير.

تعديل 3: حاولت إزالة جميع الإضافات. لم يتغير شيء. (أيضًا، لا يمكنني إعادة التشغيل لأن العمليات تبدو وكأنها تتقاطع مع بعضها البعض).

تعديل 4: جربت أمر @Overgrow ونعم، في الحقيقة لدي مشكلة

[1] pry(main)> posts = Post.where("raw like '%youtube%'").count
=> 72674

أواجه صعوبة في تشغيل أوامر إعادة التشغيل لأن الحاوية ترسل لي هذا الخطأ:

PG::UnableToSend: no connection to the server

PG::ConnectionBad: PQconsumeInput() SSL SYSCALL error: EOF detected

هل أحتاج إلى إيقاف شيء ما؟

قد تكون إحدى الطرق هي إعادة الخبز ببساطة باستخدام تطابق النمط وتحديد تأخير.

شيء مثل:

rake posts:rebake_match["%youtube%",regex,10]

؟

مشكلتي الرئيسية هي عدم القدرة على تشغيل الأمر :sweat:

قد يعمل هذا لإعادة الخَبز ببطء: Post.where("raw like '%youtube%'").where("cooked NOT LIKE '%lazyYT%'").update_all(baked_version: nil)

أولاً، شكرًا جزيلاً لك على تخصيص وقتك لمساعدتي @riking.

نفذت الأمر وحصلت على ما أعتقد أنه عدد المنشورات المفقودة: 22462. بناءً على الجزء الأخير من الأمر، هل من الآمن افتراض أنه يعمل في الخلفية؟

نعم، هناك مهمة تعمل كل 15 دقيقة لإعادة معالجة عدد المنشورات في SiteSetting.rebake_old_posts_count.

سؤال بسيط: الرقم لا ينخفض بغض النظر عن المدة الزمنية التي مرت. هل هناك طريقة ليتمكن من متابعة هذه المهمة أو إجبارها؟

هه، من الممكن أن أكون أخطأت :thinking: ما هي نتيجة هذا؟ Post.where("raw like '%youtube%'").where("cooked LIKE '%lazyYT%'").count

الحالة الحالية:

الأمر القديم:

[2] pry(main) Post.where("raw like '%youtube%'").where("cooked NOT LIKE '%lazyYT%'").update_all(baked_version: nil)
=> 23257

الأمر الجديد:

[1] pry(main) Post.where("raw like '%youtube%'").where("cooked LIKE '%lazyYT%'").count
=> 49458

تعديل: بعد مرور بعض الوقت، يمكنني تأكيد أن القيمة الثانية تبقى ثابتة (نفس القيمة) بينما تستمر القيمة الأولى في الزيادة.

لا يلزم استخدام تعبير نمطي (Regex) لمطابقة نص في منشور. يكفي البحث البسيط عن النص youtube (على سبيل المثال) بشكل جيد. في هذا المثال، سيتم إعادة معالجة كل منشور يحتوي على النص youtube، واحدة كل 100 ثانية (بطيء جدًا…)

Screen Shot 2020-05-26 at 11.23.06 AM

مرّ حوالي 100 ثانية:

Screen Shot 2020-05-26 at 11.25.35 AM

سأترك هذا الأمر يعمل، وأتوقع أن تكتمل مهمة Rake هذه خلال 76,200 ثانية تقريبًا، زائدًا أو ناقصًا :slight_smile:

يبدو أنني كان يجب أن أجعل هذا المثال بإبطاء 10 ثوانٍ فقط :slight_smile:

شكرًا جزيلاً لك @neounix

جربتها، ولكن للأسف دون نجاح.

أبدأ في الاعتقاد بأنه ربما هناك شيء متعلق بالشبكات؟

عذرًا @iceman،

بصفتي شخصًا مهتمًا بالتقنية، لا أفهم ما المقصود بـ “دون نجاح” :slight_smile: (لا توجد معلومات تقنية كافية)

هل تقصد أنه عند تشغيل أمر rake، تظهر لك رسالة خطأ من Rails؟

إذا كان الأمر كذلك، يرجى نشر رسالة الخطأ الكاملة من Rails.

أو، هل تنفذ مهمة Rails بنجاح؟ إذا كان كذلك، فكم عدد المنشورات التي تم إعادة معالجتها حسب مهمة rake؟

شكرًا لك.

على سبيل المثال، مهمتي الصغيرة لإعادة المعالجة (بانتظار 100 ثانية بطيئة جدًا) تعمل منذ ساعات لهذا الموضوع:

Screen Shot 2020-05-26 at 5.09.07 PM

حاليًا 209 من أصل 762 إجماليًا…

ما هي أرقام مهمة إعادة المعالجة لديك؟

سامحني على معلوماتي الضعيفة!

كان قصدي أنني شغّلت الأمر على عينة صغيرة ثم أعدت تشغيله، لكن الرقم لم يتغير.

أي: شغّلت الأمر وكان لدي 76000 منشور، ثم تم تجهيز 200 منها وتوقف، ثم شغّلته مرة أخرى وأصبح العدد الجديد 76200 (نعم، ربما أضاف مستخدمو 400 منشورًا يتضمن يوتيوب… لكن… لا أعرف).

الآن أقوم بتشغيله مرة أخرى فقط لأرى كيف يسير الأمر، لكنه سيستغرق بعض الأيام :stuck_out_tongue: (76500 ضربة…)

وبما أن لا أحد آخر يواجه هذه المشكلة، فأنا أحاول التفكير في المتغيرات الخاصة بي، وبشكل أساسي:

  • تغيير الجهاز (لذا قد يكون الأمر مرتبطًا بحدود معدل يوتيوب؟)
  • استعادة نسخة احتياطية من Discourse على تثبيت جديد (هذا لا ينبغي أن يكون مرتبطًا، لكن في هذه المرحلة أراهن على كل ما يتحرك)
  • تثبيت عبر حاويتين (ظننت أن هناك مشكلة في إعادة بناء البيانات، لكن بفضل هذه المعلومة من @Falco الآن أعرف أن الأمر “طبيعي”.)
  • إضافة CloudFlare فوقه اتباعًا لدروس CDN الموجودة هنا.

آسف لأنني أبدو غبيًا قليلاً :slight_smile: هل تقصد أنك تشغل مهمة rake هذه؟

rake posts:rebake_match['youtube',string,10]

من المهم نشر ما تكتبه وتراه بدقة.

ما هي مهمة rake بالضبط، وما هي المعاملات التي تشغلها؟

عند تشغيل مهمة rake هذه، ما هي أول بضع سطور من المخرجات عندما تبدأ المهمة في إعادة المعالجة؟

يرجى نشر التفاصيل، ولقطات الشاشة، والنسخ واللصق من سطر الأوامر (أو الأسطر)، وما إلى ذلك.

عذرًا @neounix، أنت محق بنسبة 100%.

دعني أعيد الصياغة:

نفذت الأمر التالي:

root@cont-web-only:/var/www/discourse# time rake posts:rebake_match['youtube',string]
        76597 / 76594 (100.0%)-
    76597 منشورًا مكتملًا!

ثم قلت لنفسي: “حسنًا، بالطبع، يجب إضافة المؤقت، وإلا لا يمكننا اختبار ‘نظرية حد المعدل’”، لذا جربت الأمر الذي نشرته أنت:

root@cont-web-only:/var/www/discourse# time rake posts:rebake_match['youtube',string,100]
            216 / 76594 (0.2%)-

وتوقفت عنه فقط للتحقق مما إذا كانت الأمور تتغير. يبدو أن لا شيء حدث، لذا فكرت: “حسنًا، دعني أعيد تشغيل هذا وأرى كيف يسير الأمر”:

root@cont-web-only:/var/www/discourse# time rake posts:rebake_match['youtube',string,100]
           116 / 76598 (0.2%)-

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