Rufen Sie delayed_job capistrano-Aufgaben nur auf bestimmten Servern auf

8

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?

    
John Bachir 26.08.2011, 21:26
quelle

1 Antwort

12

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

%Vor%

Dann setze :delayed_job_server_role auf diesen Namen

%Vor%

Das ist alles. Jetzt werden die Aufgaben ausgeführt, aber nur für die Server, die in der Rolle :worker aufgelistet sind.

    
Simone Carletti 21.09.2011, 12:56
quelle

Tags und Links