ruby Resque vs Sidekiq?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/11580954/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Resque vs Sidekiq?
提问by Bhushan Lodha
I am currently using Resquefor my background process but recently I heard a lot of huff-buff about sidekiq. Could anybody compare/differentiate?
我目前正在使用Resque我的后台进程,但最近我听到了很多关于sidekiq. 有人可以比较/区分吗?
In particular I would like to know is there a way to monitor programmatically whether a job is completed in sidekiq
特别是我想知道有没有办法以编程方式监视作业是否在 sidekiq
回答by Sergio Tulentsev
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.
- 不需要线程安全(适用于几乎所有的 gem);
没有解释器偏好(您可以使用任何 ruby);
Resque 目前支持 MRI 2.3.0 或更高版本- 大量的插件。
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)).
- [巨大]需要您的代码和所有依赖项的线程安全。如果你用线程运行线程不安全的代码,你就是在自找麻烦;
- 在某些红宝石上比其他红宝石效果更好(推荐使用 jruby,由于 GVL(全局 VM 锁定),MRI 的效率会降低)。
回答by Firoz Ansari
Ryan has created a webcast for Sidekiq this week which also include some comparison with Resque. You probably want to check it out:
Ryan 本周为 Sidekiq 创建了一个网络广播,其中还包括与 Resque 的一些比较。你可能想看看:
回答by Gurpartap Singh
From the question:
从问题:
In particular I would like to know is there a way to monitor programmatically whether a job is completed in sidekiq
特别是我想知道有没有办法以编程方式监控作业是否在 sidekiq 中完成
Here's a solution for that:
这是一个解决方案:
- Sidekiq::Status gem
- Batch API (Sidekiq Pro) - usage
- Sidekiq::状态宝石
- Batch API (Sidekiq Pro) -用法

