Call AdminDashboardGeneralData.refresh_stats beim Booten?

https://www.pfaffmanager.com/ ruft Informationen von /admin/dashboard/general.json ab, um Versionsinformationen zu erhalten. Es ist sehr cool, dies aus der UX abrufen zu können. Leider wird es periodisch aktualisiert, nicht wenn der Server hochfährt. Wenn Sie also einen Rebuild durchführen, sind die Informationen eine ganze Weile (bis zu 30 Minuten) falsch, bevor sie erneut ausgeführt werden. Mein Plan ist es, mein Ansible-Tooling manuell AdminDashboardGeneralData.refresh_stats aufrufen zu lassen, nachdem ein neuer Container hochgefahren ist, aber das erscheint etwas albern.

Wäre es sinnvoll, diese Aufgabe beim Booten statt alle 30 Minuten auszuführen? Gibt es eine Möglichkeit, dass sie ohne Neustart aktualisiert wird? Wenn nicht, warum läuft sie alle 30 Minuten? Zumindest glaube ich, dass das passiert. Ich habe bestätigt, dass die Ausführung des obigen refresh_stats die Aktualisierung von general.json bewirkt.

2 „Gefällt mir“

Im Allgemeinen möchten wir keine Dinge ‘beim Booten’ ausführen. Während dies in einer Single-Server-Umgebung ohne Multisite sinnvoll sein mag, wird es bei Skalierung kompliziert.

Wenn Sie beispielsweise eine Autoscaling-Einrichtung haben, die Server basierend auf der Auslastung hinzufügt/entfernt, kann jedes dieser Skalierungsereignisse dazu führen, dass mehrere Server gleichzeitig “booten”. Wir möchten nicht, dass alle den Start verzögern, während einige Statistiken aktualisiert werden.

Wir möchten auch sicherstellen, dass Server erfolgreich booten können, auch wenn die Datenbank/Redis in einem schreibgeschützten Zustand sind.

Haben Sie für diesen speziellen pfaffmanager-Fall ein benutzerdefiniertes Plugin und/oder eine discourse_docker-Vorlage, die auf den Websites ausgeführt wird? Von außerhalb von Discourse könnten Sie es wie folgt auslösen:

rails runner "About.refresh_stats
3 „Gefällt mir“

Danke. Das ergibt alles Sinn.

Nein! Eines der Schlüsselprinzipien ist, dass alles so ist, wie es bei einer Standardinstallation wäre. Es gibt null pfaffmanager-spezifische Abhängigkeiten. Wenn jemand hier sieht, dass er etwas wie einen Rebuild, ein Plugin oder eine Umgebungsvariable zu app.yml hinzufügen soll, wird pfaffmanager dies genau so tun, als ob er wüsste, was SSH ist und Befehle tippen könnte. Installationen verwenden discourse-setup, Upgrades führen ./launcher rebuild aus (oder bootstrap, destroy, start für 2-Container-Setups). Wenn Postgres veraltet ist, werden die Prozeduren in PostgreSQL 13 Update befolgt und so weiter. Ein paar Dinge haben mich versucht, ein optionales Support-Plugin zu erstellen, aber das möchte ich meistens vermeiden. Ich jongliere bereits mit Ansible, Rails und Ember – ein weiteres Teil im Spiel ist nicht sehr attraktiv.

Aber dieser runner-Teil war eine große Hilfe. Ich werde dies einfach ausführen, nachdem ein neu erstellter Container neu gestartet wurde:

docker exec web_only bash -c 'rails runner AdminDashboardGeneralData.refresh_stats'

Vielen Dank. Das war genau das, was ich brauchte.

3 „Gefällt mir“