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
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
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 )
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.
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).
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.
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?
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..
Ich werde es so schnell wie möglich testen. Solange es für mich die Verarbeitung blockiert, bin ich mehr als glücklich
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…?
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 )
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.
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))