Resque vs Sidekiq?
RubyRuby on-Rails-3ResqueSidekiqRuby Problem Overview
I am currently using Resque
for my background process but recently I heard a lot of huff-buff about sidekiq
. Could anybody compare/differentiate?
In particular I would like to know is there a way to monitor programmatically whether a job is completed in sidekiq
Ruby Solutions
Solution 1 - Ruby
Resque:
Pros:
- does not require thread safety (works with pretty much any gem out there);
has no interpreter preference (you can use any ruby);
Resque currently supports MRI 2.3.0 or later- loads of plugins.
Cons
- runs a process per worker (uses more memory);
- does not retry jobs (out of the box, anyway).
Sidekiq:
Pros
- runs thread per worker (uses much less memory);
- less forking (works faster);
- more options out of the box.
Cons
- [huge] requires thread-safety of your code and all dependencies. If you run thread-unsafe code with threads, you're asking for trouble;
- works on some rubies better than others (jruby is recommended, efficiency on MRI is decreased due to GVL (global VM lock)).
Solution 2 - Ruby
From the question:
> In particular I would like to know is there a way to monitor > programmatically whether a job is completed in sidekiq
Here's a solution for that:
- Sidekiq::Status gem
- Batch API (Sidekiq Pro) - usage