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)).
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