2016-08-01 8 views
1

Ich habe einen Arbeiter mit einer Leistungsklasse. Im Controller rufe ich diese Arbeiterklasse auf. Wenn ich es mit worker.perform.now aufrufen sehe ich in der Konsole, dass die Methode ausgeführt wird, wie ich es will.So planen Sie Sidekiq Woker.perform.now?

Wie planen Sie diesen Aufruf in der Steuerung, um jeden Tag um zehn Uhr durchgeführt werden?

PS: Wenn ich worker.perform_async aufrufen, tut es nichts.

Antwort

2

PS: Wenn ich worker.perform_async aufrufen, tut es nichts.

Ich vermute, dass Sie sidekiq Server nicht gestartet haben. Geben Sie in der Konsole sidekiq ein, um den Server zu starten.

Da sidekiq Jobs zu jeder Zeit ausgeführt werden sollen, gibt es mehrere Möglichkeiten.

Die von Sidekiqs Autor empfohlene Version ist CRON mit Whenever gem. Er bietet auch und Beispiel hier: https://github.com/mperham/sidekiq/blob/master/examples/scheduling.rb

Andere Möglichkeit ist zu verwenden Sidekiq-cron gem. Ich habe es einfacher gefunden, aber es emuliert CRON, deshalb ist die erste Lösung solider.

+1

Denken Sie daran, 'bundle exec sidekiq' zu nennen, wenn Sie in einer Umgebung arbeiten, in der einige verschiedene sidekiq-Versionen installiert sind –

+1

Stellen Sie auch sicher, dass auch Ihr' redisis-server' läuft. – Reboot

+0

Alles ist gut auf dem Server eingestellt. Ich habe schedule.rb wie von Owen empfohlen Dokumentation 'jeden 1. Tag,: um => '2:30 Uhr' tun Läufer" Worker.perform_async "Ende' jetzt in Cron-Datei Ich habe: '30 14 * * */bin/bash -l -c 'cd/home/benutzer/myapp/aktuell/&& bundle exec bin/rails runner -e produktion' \ '' Worker.perform_async '\' '' ' Aber ich habe immer noch keine Jobs in Sidekiq in die Warteschlange gestellt. Siehst du etwas falsch mit meiner Cron-Datei? –