Fehlende Youtube-Einbettungen

Hallo @Iceman,

du liegst nicht falsch. Du versuchst lediglich, ein Problem zu lösen – vielleicht bist du frustriert, weil deine YT-Einbettungen nicht funktionieren …

Wenn du folgenden Befehl ausführst:

# time rake posts:rebake_match['youtube',string,100]
           116 / 76598 (0,2%)- 

wird aufgrund der auf 100 Sekunden gesetzten Verzögerung nur alle 100 Sekunden ein Beitrag neu gerendert. Da du fast 77.000 Beiträge hast, die so neu gerendert werden müssen, würde das etwa 90 Tage dauern. Als ich die Zahl 100 verwendet habe, diente sie nur als Beispiel, nicht als Empfehlung – falls ich dich damit verwirrt habe, tut es mir leid :slight_smile:

Selbst wenn du die Verzögerung auf 10 Sekunden reduzierst, wird das Neu-Rendern etwa 9 Tage in Anspruch nehmen.

Mit welcher Geschwindigkeit möchtest du deine „YT-Cakes

Du kannst als Administrator ganz einfach „HTML neu erstellen“ ausführen, indem du unter jedem Beitrag auf die entsprechende Schaltfläche klickst.

Danke @neounix

Habe es an einem einzelnen Beitrag mit einem YT-Link ausprobiert:

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

Dann habe ich den Beitrag überprüft, und es wird immer noch nur der Link angezeigt, keine Onebox. (Geprüft ohne Cache, ohne Cookies, sogar mit einem anderen PC :stuck_out_tongue: )

Danke @Overgrow.

Habe das auch vor und nach dem oben genannten Rebake-Befehl an demselben und einem weiteren Beitrag ausprobiert, leider ohne Erfolg.

Hey @iceman,

Das ist also ein wichtiger Hinweis; und jetzt wissen wir, dass selbst das Neuberechnen eines einzelnen Beitrags mit dem Rake-Task dein Problem nicht löst (wir haben auch bestätigt, dass der HTML-Neuaufbau über die Benutzeroberfläche nicht funktioniert, wie von @Overgrow vorgeschlagen), was du uns zuvor mitteilen wolltest.

Danke für die schrittweise Fehlersuche.

Lass mich das eine Weile überdenken; und in der Zwischenzeit haben vielleicht andere jetzt, da das Problem klarer wird, einige Ideen.


Bearbeitung:


@Iceman

Poste hier einen deiner (nicht funktionierenden) YT-Links (vielleicht den, bei dem du den Text ‘icemanworkingonthisheadache’ hinzugefügt hast), und lass uns bestätigen, dass hier eine Onebox funktioniert (ich werde es auch auf einer meiner Staging-Sites versuchen).

Klar, @neounix

Das passiert bei jedem YT-Video, aber der Konsistenz halber hier zwei, die ich speziell dafür getestet habe:


Edit: Ja, hier funktionieren sie.

Als Hinweis: Bei meiner Installation werden sie in der Vorschau-Leiste nicht angezeigt.

Aber alle anderen „nicht YT

Hallo @neounix,

ja, alle anderen Oneboxes funktionieren wie erwartet: Discourse, WordPress, SoundCloud, Facebook, Twitter, Vimeo usw. Nur YT wird als URL angezeigt.

Ein Versuch ist es, sich bei Google anzumelden und die YouTube-Website über Ihren Server als Proxy aufzurufen, um zu sehen, ob dabei ‘interessante’ Fehlermeldungen angezeigt werden.

Wenn du Onebox im Editor für neu hinzugefügte Beiträge nicht zum Laufen bekommst, hat es keinen Sinn, alte Beiträge neu zu rendern.

Du musst zuerst Onebox für neue Beiträge zum Laufen bringen (zumindest dafür sorgen, dass es im Vorschaufenster korrekt angezeigt wird).

Und btw: HTML-Neu-Rendering über die UI = Neubearbeitung.

Also, nach einer Woche der Buße habe ich zwar Fortschritte gemacht, aber letztendlich an einer Wand festgesteckt.

  • Alle oben genannten Details gelten weiterhin.

  • Nachdem ich mich beim Debugging über das hinaus bemüht hatte, was eigentlich erwartet wurde, stellte sich heraus, dass das Problem folgendes war: Als ich den neuen Droplet erstellt habe, habe ich die Gelegenheit genutzt, einige Dinge zu aktualisieren, die ich damals mit dem ursprünglichen nicht tun konnte. Eines davon war IPv6. Es stellt sich heraus, dass die IPv6-Bereiche von Digital Ocean aus kosmischen Gründen größtenteils von Google gesperrt sind. Also, ein Rat für die Zukunft: Wenn du eine Discourse-Installation auf DO einrichtest, richte IPv6 nicht ein, denn du kannst IPv6 später nicht entfernen – du müsstest den Droplet wechseln.

  • Nach der Korrektur funktionierte alles wie erwartet. Aufgrund des normalen Wachstums (und einiger neuerer Taktiken von Alphabet) bin ich jedoch wieder bei Null angelangt, da ich nun diesen Fehler erhalte und keine Möglichkeit kenne, Discourse daran zu hindern, Oneboxes zu verarbeiten (ich habe sogar versucht, die YT-Domain auf die Blacklist zu setzen, leider ohne Erfolg). Laut dem verlinkten Beitrag sollte das Problem „nach einer Stunde verschwinden“, aber ich kann meine Rebuilds nicht einfrieren… oder doch? Sollte ich das tun? Die anderen Optionen erfordern Änderungen auf Serverseite, wie z. B. das Hinzufügen weiterer IPs oder das Erzwingen von „X-Forwarded-For“ bei Onebox-Aufrufen.

  • Außerdem eine Bonusfrage: Warum übernimmt Discourse die Last, YT aufzurufen? Ich meine, dieser Fehler deutet darauf hin, dass die Server-IP als verantwortlich für alle Aufrufe markiert wird (ja, das liegt an der Onebox-Unfurling-Funktion), aber… warum fällt das nicht unter den Benutzer, der die Seite lädt? Leistungsoptimierung?

Hallo @Iceman,

Als Notlösung habe ich diesen (nicht eleganten) CSS-Code für dich getestet, und er scheint zu funktionieren, um Oneboxes (von der Verarbeitung) abzuhalten; eine Art „Fliege mit einem Hammer schlagen“-Ansatz, den du ein- und ausschalten (hinzufügen und entfernen) kannst, bis du etwas Besseres findest. Probier es einfach aus und schau:

.onebox-body{
    display:none;
}

Hoffe, das hilft.

Hinweis:

Ich habe dies an einigen Onebox-Links getestet, und die Onebox(es) verschwanden, während der Link erhalten blieb; habe jedoch nicht im Detail getestet, sorry.

Bitte stoppen Sie die aktuelle Verarbeitung. Wissen Sie, was den laufenden Neuberechnungsvorgang ausgelöst hat? Ist es ein Hintergrundjob? Falls ja, setzen Sie einfach die Einstellung „Anzahl der alten Beiträge, die neu berechnet werden“ auf null.

Anschließend können Sie die Neuberechnung ausgewählter YouTube-Beiträge (die einem regulären Ausdruck entsprechen) mit Verzögerungen durchführen..

Zunächst einmal vielen Dank an euch beide @neounix @Overgrow

Bezüglich dessen:

Ich werde es so schnell wie möglich testen. Solange es für mich die Verarbeitung blockiert, bin ich mehr als glücklich :smiley:

Bezüglich @Overgraws Frage:

Ich habe kürzlich gelernt (danke an euch), wie man benutzerdefinierte Rebakes durchführt, einige Abfragen und dunkle Magie anwendet. Allerdings kann ich fragen, wie ich das wissen/abfragen kann:

Ich meine… geschieht das in der Ruby-Konsole oder durch das Beenden von etwas in Sidekiq…?

rebake old posts count steuert, wie viele Beiträge, die mit den verschiedenen rake-Aufgaben markiert wurden, alle 15 Minuten verarbeitet werden.

Hallo @riking,

vielen Dank für deinen Input. Nur eine kurze Frage… wie kann ich diese Einstellung ändern? Rails Console?

Yo @Iceman

Das ist eine Einstellung in der Admin-Oberfläche

Gott, fühle ich mich dumm :sweat_smile: Danke @neounix!

Ich kann es aber nicht auf null setzen. Die UI sagt, der Wert muss zwischen 1 und 2.000.000.000 liegen. Also werde ich es wohl auf 1 setzen und es mit deinem Hack kombinieren… das sollte mir erlauben zu prüfen, ob das Ban aufgehoben wird.

(Denn die anderen Optionen sind viel aufwendiger, da es sich um neue IPs, Load Balancer oder das direkte Erzwingen von X-Forwarded-For für alles handelt, und ich möchte nicht, dass Discourse kaputtgeht :sweat:)

Ich melde mich bald!

Zur Info: Wenn Sie es auf Null setzen müssen, können Sie dies höchstwahrscheinlich über eine direkte Datenbank-UPDATE-Abfrage (oder Rails, worüber ich nicht kompetent Auskunft geben kann) durchführen.

Tja, kein Glück. Ich habe den Wert auf 1 belassen und den Hack verwendet, um nichts anzuzeigen, aber der Bann ist auch fünf Stunden später noch aktiv. Das Schlimmste? Natürlich gibt es keine Möglichkeit, sie zu kontaktieren, also muss ich mir nur Lösungen zusammenreimen. :sweat:

Du musst Geduld haben. Aus meiner Erfahrung kann es bis zu 2–3 Tage dauern, bis der Bann aufgehoben wird. Stelle einfach sicher, dass keine weiteren Anfragen an diese IP erfolgen.

Du kannst prüfen, ob noch Rebake-Jobs ausgeführt werden müssen. Ein Hinweis findet sich im Code (diese Zeile wählt Beiträge aus, die im Hintergrund neu gerendert werden müssen, begrenzt durch die Einstellung „rebake old posts count"):

Du suchst nach folgenden Beiträgen:

WHERE (((baked_version IS NULL) OR (baked_version < 2)) AND (deleted_at IS NULL))