Który background job wybrać?

Witam,

mam taki problem, otóż mam sobie serwer passenger + nginx, na którym mam postawioną sinatrę.
W sinatrze mam proste API z dwoma akcjami: start i stop. Kiedy dostanę request na akcję start to odpala mi się job (obecnie SuckerPunch) który może trwać nawet 24 godziny. I teraz pytanie czy SuckerPunch jest dobry do takich rzeczy czy lepiej pójść w coś innego np. Sidekiq? A może jeszcze inne rozwiązanie niż background job ktoś ma?

Za wszelkie wskazówki będę wdzięczny.
Pozdrawiam

co takiego ten background job robi przez tak długi okres czasu ?

odpala proces ffmpeg’a i nagrywa screen. Długość trwania procesu jest zależna od użytkownika.

Mam w swojej apce zastosowany
gem 'whenever'

w pliku config/schedule.rb prosty wpis:

every ..... do
   rake "cronjobs:sync_big_data"
end

,a w lib/tasks/cronjobs.rake:

namespace :cronjobs do
  desc "Synchronize data with my sys 2"
  task sync_big_data: :environment do
    User.all.each do |user|
      ...i tutaj dowone wywoływanie metod
    end
  end
end

Mam kilka takich tasków. Część z nich odpala się co kilkanaście minut, inne raz na dobę i wszystko działa doskonale.
Zainteresuj się więc “gem ‘whenever’”, bo to chyba załatwia Twoje potrzeby

Nie do końca, nie chce używać “crona” gdyż to nie jest tego typu problem.
Mój kod będzie odpalany manualnie np. dziś o 23:00 lub za 10 dni o 15:00 - user decyduje.
Chodzi o to w co “włożyć” mój proces który może trwać bardzo długi czas. Obecnie używam SuckerPunch ale gdzieś wyczytałem, że jest on projektowany dla zadań krótkich i nie krytycznych. Więc moje pytanie brzmi czy w tym wypadku sidekiq lepiej się sprawdzi czy może podejść do tematu zupełnie inaczej np. jako oddzielny proces linuxa odpalany w tle np. system(‘ruby main.rb &’)

Background joby ogólnie powinny być krótkie. Sidekiq uruchamia zadania duży szybciej ale wymaga za do większych zasobów (koszty).

Dlaczego do uruchomienia nagrywania wykorzystujesz background joba czy wykorzystujesz tylko terminarz, z godzinami kiedy job powinien być uruchomiony czy potrzebujesz jeszcze inne zalety background jobów (jak np. ponawianie) ?

Background joba używam gdyż jest on wygodny - mogę przekazać parametry, uruchomić za 2 min od czasu akcji “start”, pobrać identyfikator job’a itp.
Tak naprawdę mogę obejść się bez tych rzeczy jeśli znajdzie się “lepsze” rozwiązanie.

Zerknij na to http://stackoverflow.com/questions/11982057/how-can-i-trigger-a-shell-script-and-run-in-background-async-in-ruby/11983570#11983570