Ich habe einen dedizierten Server für delayed_job-Aufgaben. Ich möchte delayed_job-Mitarbeiter auf only diesem Server starten, stoppen und neu starten. Ich benutze die Capistrano-Rezepte von delayed_job.
Wenn ich nur 1 Server hatte, war das meine Konfiguration:
%Vor% Nun möchte ich, dass diese Hooks nur auf einen separaten Server delayed_job angewendet werden ( role :delayed_job <ip address>
). Ist das möglich, elegant zu machen? Muss ich jeden delayed_job-Task in eine Metatask einbinden? Oder schreibe meine eigenen Aufgaben und nutze nicht die Aufgaben, die der verzögerte Job bietet?
Wenn Sie eine Aufgabe in Capistrano definieren, können Sie die Ausführung der Aufgabe auf bestimmte Rollen beschränken. Die Art, wie Sie dies tun, besteht darin, die Option :role
zu übergeben.
Es scheint, dass das defaulted_job Capistrano-Rezept dies tut.
> %Vor% Entsprechend dem Quellcode ruft der Task die Liste der Rollen aus der Konfigurationsvariablen :delayed_job_server_role
ab.
Zurück zu Ihrem Problem, um die Ausführung der Aufgaben auf eine bestimmte Gruppe von Servern einzuschränken, definieren Sie eine neue Rolle (z. B. Arbeiter) in Ihrem deploy.rb
Dann setze :delayed_job_server_role
auf diesen Namen
Das ist alles. Jetzt werden die Aufgaben ausgeführt, aber nur für die Server, die in der Rolle :worker
aufgelistet sind.
Tags und Links ruby capistrano delayed-job