Der Versuch, Redis- und Resque -Scheduler innerhalb einer Rake -Aufgabe zu starten,
-
24-10-2019 - |
Frage
Ich möchte Redis und Redis-Scheduler von einer Rake-Aufgabe beginnen, also mache ich Folgendes:
namespace :raketask do
task :start do
system("QUEUE=* rake resque:work &")
system("rake redis:start")
system("rake resque:scheduler")
end
end
Das Problem ist, dass der Redis im Vordergrund beginnt und dies dann nie den Scheduler ausschüttet. Wenn es nicht im Hintergrund beginnt (mit &). Scheduler muss gestartet werden, nachdem Redis in Betrieb ist.
Lösung
Ähnlich wie nirvdrum. Die Reseque -Arbeiter werden scheitern/beenden, wenn Redis nicht bereits ausgeführt wird und Verbindungen akzeptiert.
Schauen Sie sich dieses Kern an, um ein Beispiel für wie zu Beginnen Sie die Dinge mit Monit (Linux -Zeug).
Bei der Monit kann ein Dienst von einem anderen abhängig sein, und stellt sicher, dass sie durch Überwachung einer .pid -Datei am Leben bleiben.
Andere Tipps
Das fällt mir als keine großartige Idee an. Sie sollten Ihren Redis -Server über ein Init -Skript oder so starten lassen. Wenn Sie jedoch wirklich auf diese Weise gehen möchten, müssen Sie wahrscheinlich Ihre Redis ändern: Starten Sie die Aufgabe, um Nohup zu verwenden und den Prozess zu erhalten, damit Sie die Verbindung von der TTY trennen und den Prozess laufen lassen können.