Fehlende Youtube-Einbettungen

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. . . )

Hat jemand ein Problem beim Neubearbeiten von Beiträgen, bei dem eine 429 ‘Zu viele Anfragen’-Fehlermeldung für youtube.com auftritt?

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

:thinking:

Mir ist das auch schon passiert. Es handelt sich um einen vorübergehenden IP-Sperre (ich glaube, für 1 Stunde), und während dieser Zeit scheitern alle YouTube-Oneboxes bei den neu aufbereiteten Beiträgen.

Vielleicht sollte man einen Mechanismus implementieren, der verhindert, dass beim Rebacken mehr als x Anfragen pro Stunde an YouTube gesendet werden?

[quote=“Overgrow, Beitrag: 4, Thema: 47718”]
Hat jemand ein Problem, wenn beim Neuberechnen von Beiträgen der Fehler 429 „Too Many Requests

Ein Ansatz könnte darin bestehen, einfach ein Musterabgleich zu verwenden und eine Verzögerung festzulegen.

Etwas wie:

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

?

Mein Hauptproblem ist, dass ich den Befehl nicht ausführen kann :sweat:

Dies könnte funktionieren, um langsam neu zu rendern: Post.where("raw like '%youtube%'").where("cooked NOT LIKE '%lazyYT%'").update_all(baked_version: nil)

Zunächst einmal, vielen Dank, dass du dir die Zeit genommen hast, mir zu helfen, @riking.

Ich habe den Befehl ausgeführt und habe das Ergebnis erhalten, von dem ich annehme, dass es die Anzahl der fehlenden Beiträge ist: 22462. Basierend auf dem letzten Teil des Befehls kann man davon ausgehen, dass er im Hintergrund läuft?

Ja, es gibt einen Job, der alle 15 Minuten läuft und SiteSetting.rebake_old_posts_count Beiträge erneut verarbeitet.

Nur eine Frage: Die Zahl sinkt nicht, egal wie viel Zeit vergeht. Gibt es eine Möglichkeit, diesen Job zu verfolgen oder zu erzwingen?

Hmm, möglich, dass ich das verbockt habe :thinking: Was ist das Ergebnis davon? Post.where("raw like '%youtube%'").where("cooked LIKE '%lazyYT%'").count

Aktueller Status:

Alter Befehl:

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

Neuer Befehl:

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

Edit: Nach einiger Zeit kann ich bestätigen, dass der zweite Wert statisch bleibt (gleicher Wert), während der erste Wert weiter ansteigt.

Für die Übereinstimmung eines Strings in einem Beitrag ist keine Regex erforderlich. Eine einfache String-Suche reicht für youtube (zum Beispiel) völlig aus. In diesem Beispiel wird jeder Beitrag, der den String youtube enthält, neu verarbeitet, und zwar einer alle 100 Sekunden (sehr langsam…)

Screen Shot 2020-05-26 at 11.23.06 AM

Ungefähr 100 Sekunden vergangen:

Screen Shot 2020-05-26 at 11.25.35 AM

Ich lasse das einfach weiterlaufen und gehe davon aus, dass diese Rake-Aufgabe in etwa 76.200 Sekunden (plus/minus) abgeschlossen sein wird :slight_smile:

Ich hätte dieses Beispiel wohl mit einer Verzögerung von 10 Sekunden anlegen sollen :slight_smile:

Vielen Dank @neounix

Ich habe es versucht, aber leider ohne Erfolg.

Ich fange an zu glauben, dass es vielleicht etwas mit dem Netzwerk zu tun hat?

Entschuldigung @iceman,

Als etwas nerdiger Typ verstehe ich nicht genau, was „ohne Erfolg

Entschuldigt meine schlechten Informationen!

Ich meinte, dass ich es auf einer kleinen Stichprobe ausgeführt und dann erneut gestartet habe, aber die Zahl hat sich nicht geändert.

Also: Ich habe den Befehl ausgeführt und hatte 76.000 Beiträge, es wurden 200 verarbeitet, dann gestoppt, und als ich es erneut ausgeführt habe, war die neue Zahl 76.200 (ja, vielleicht haben meine Nutzer 400 Beiträge mit YouTube hinzugefügt… aber… ich weiß es nicht).

Jetzt führe ich es erneut aus, nur um zu sehen, wie es läuft, aber das wird einige Tage dauern :stuck_out_tongue: (76.500 Treffer…)

Da niemand sonst dieses Problem hat, versuche ich, über meine Variablen nachzudenken, und zwar:

  • Maschine gewechselt (also könnte es eine YouTube-Ratenbegrenzung sein?)
  • Ein Discourse-Backup auf einer neuen Installation wiederhergestellt (das sollte nicht damit zusammenhängen, aber an diesem Punkt wette ich auf alles, was sich bewegt)
  • Zwei-Container-Installation (Ich dachte, ich hätte ein Problem mit dem Neuaufbau der Daten, aber dank dieser Information von @Falco weiß ich jetzt, dass dies “normal” ist.
  • CloudFlare darauf installiert, gemäß den CDN-Tutorials, die hier zu finden sind.

Entschuldige, dass ich so langsam bin :slight_smile: Meinst du, du führst diesen Rake-Task aus?

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

Es ist wichtig, genau anzugeben, was du eingibst und siehst.

Was ist der genaue Rake-Task, mit welchen Parametern führst du ihn aus?

Wenn du diesen Rake-Task ausführst, wie lauten die ersten paar Zeilen der Ausgabe, wenn der Task beginnt, neu zu berechnen?

Bitte poste Details, Screenshots, Kopien und Einfügungen aus deinen Kommandozeilen usw.

Entschuldigung @neounix, du hast zu 100 % recht.

Lass es mich anders formulieren:

Ich habe diesen Befehl ausgeführt:

root@cont-web-only:/var/www/discourse# time rake posts:rebake_match['youtube',string]
        76597 / 76594 (100.0%)-
    76597 Beiträge erledigt!

Dann dachte ich mir: „Na klar, man muss den Timer hinzufügen, sonst können wir die ‚Rate Limit Theory’ nicht testen