Wie man einen langlaufenden Job am besten in die Warteschlange stellt

Also, ich habe ein Plugin, das Ansible startet, um eine Discourse-Installation durchzuführen (ich möchte wirklich, wirklich aufhören, WordPress für die Annahme von Installationsaufträgen zu verwenden!).

Anfangs habe ich fork aufgerufen, um es zu starten, was beim Testen gut funktionierte, aber ich dachte, ich sollte es auf eine „Discourse-typische

Einmalige Aufgaben sind Aufgaben, die eben nur einmal ausgeführt werden. Es sieht so aus, als wäre das, was du brauchst, eine regelmäßige Aufgabe, die durch einen Trigger ausgelöst wird, etwa wenn eine Anfrage einen Controller erreicht.

Regelmäßige Aufgaben können länger als 60 Sekunden dauern, wie es im normalen Betrieb bei einigen der Fall ist.

Nun, ich habe es auf einen regulären Job umgestellt und versucht, es mit ./bin/rails s anstelle von ./bin/unicorn auszuführen, aber immer noch kein Erfolg.

Das ergibt keinen Sinn, denn ich weiß, dass viele dieser Jobs länger als eine Minute dauern.

Wie genau führst du den Job aus? Kannst du den relevanten Teil des Ruby-Codes hier einfügen?

Aber sicher!

https://github.com/pfaffman/discourse-pfaffmanager/blob/master/app/jobs/regular/create_droplet.rb

https://github.com/pfaffman/discourse-pfaffmanager/blob/master/app/models/pfaffmanager/server.rb#L150-L172

Warum verwendest du

Jobs::CreateDroplet.new.execute(server_id: id)

anstatt

Jobs.enqueue(:create_droplet, server_id: id)

in https://github.com/pfaffman/discourse-pfaffmanager/blob/49f7369b1dc0b1c8f63065b14c92ac7ecc3ab2b3/app/models/pfaffmanager/server.rb#L146?

Und genau deshalb muss ich Fragen stellen! Ich bin schließlich nur ein Höhlenmensch. (Keine Beleidigung für jemanden, der in einer Höhle lebt.)

Es gibt natürlich keinen Grund. Ich konnte einfach nicht herausfinden, wie ich es aufrufen sollte!

Vielen Dank!

… und es läuft immer noch! …

Vielen Dank. Das hat zumindest ein paar Stunden gedauert…

Nächster Schritt: Es auf einem echten Produktionsserver ausführen…