Ich habe Sidekiq erfolgreich verwendet, um Hintergrundjobs auszuführen, die von Benutzeraktionen in einer Rails 3.2-Anwendung initiiert werden. Meine spezielle Anwendung umfasst das Senden und Empfangen von Daten von und externen Quellen über eine API eines Drittanbieters.Wie kann ich einen kontinuierlichen Hintergrundjob mit Sidekiq ausführen?
Ich muss Daten mit dieser externen Quelle synchronisiert halten, indem ich kontinuierlich für jeden Benutzer überprüfe, ob Daten zum Herunterladen verfügbar sind.
Alle meine bisherigen Hintergrundjobs sind vom Benutzer initiiert, wie ich oben erwähnt habe. Meine Frage ist, wenn ich ständig für die Existenz von externen Daten für jeden Benutzer in einer while
Schleife vorstellen möge überprüfen I:
# pseudocode
while true
for user in User.active
data = user.get_data
next if data.blank?
UserDataWorker.perform_async(user.id)
end
end
dann wo platziere ich den Code oben? Ich bin verwirrt darüber, wie man eine kontinuierliche Aufgabe hervorbringt. Ich möchte den Code nicht in einen Sidekiq-Worker einfügen, weil es nur ein Job ist, der nie abgeschlossen wird. Oder sollte ich das tun?
Ich möchte es nicht in eine Rake-Aufgabe einfügen, denn wie kann ich dann diese Rake-Aufgabe überwachen? Alles, was ich über Sidekiq gelesen habe, scheint auf einen Worker zu verweisen, der eine Aufgabe ausführt, die endlich ist und in der Lage ist, abgeschlossen oder fehlerhaft ausgeführt zu werden. Ich schätze jede Hilfe, die Sie anbieten können.
Wie wäre es mit Cron Job? – mkk
Ich dachte darüber nach, aber Cron ist eher aufgabenorientiert und das, wonach ich suche, ist mehr wie ein Daemon. – AKWF