Używałem pomyślnie Sidekiq do uruchamiania zadań w tle, które są inicjowane przez akcje użytkownika w aplikacji Rails 3.2. Moja szczególna aplikacja polega na wysyłaniu i odbiorze danych zi zewnętrznego źródła za pośrednictwem zewnętrznego API.Jak mogę uruchomić ciągłe zadanie w tle za pomocą Sidekiq?
Muszę zachować synchronizację danych z tym zewnętrznym źródłem, stale sprawdzając każdego użytkownika, czy są dostępne dane do pobrania.
Wszystkie moje dotychczasowe zadania zostały zainicjowane przez użytkownika, jak wspomniałem powyżej. Moje pytanie brzmi, czy chcę ciągle sprawdzić istnienie danych zewnętrznych dla każdego użytkownika, w while
pętli sobie wyobrazić:
# pseudocode
while true
for user in User.active
data = user.get_data
next if data.blank?
UserDataWorker.perform_async(user.id)
end
end
to gdzie mogę umieścić powyższy kod? Nie rozumiem, w jaki sposób odradzać się ciągłe zadanie. Nie chcę umieszczać kodu w module Sidekiq, ponieważ będzie to praca, która nigdy się nie zakończy. Czy powinienem to zrobić?
Nie chcę umieszczać go w zadaniu rake, bo jak mam monitorować to zadanie? Wszystko, co czytałem o Sidekiq, wydaje się wskazywać na pracownika wykonującego zadanie, które jest skończone i może zostać ukończone lub usunięte. Doceniam każdą pomoc, którą możesz zaoferować.
Co powiesz na wykorzystanie zadania cron? – mkk
Myślałem o tym, ale cron jest bardziej zorientowany na zadania, a to, czego szukam, przypomina bardziej demona. – AKWF