Resque vs Sidekiq?

Bhu*_*dha 125 ruby resque ruby-on-rails-3 sidekiq

我目前正在使用Resque我的后台进程,但最近我听到了很多关于sidekiq.有人可以比较/区分吗?

特别是我想知道有没有办法以编程方式监控工作是否完成 sidekiq

Ser*_*sev 128

Resque:

优点:

缺点

  • 每个工作者运行一个进程(使用更多内存);
  • 不会重试工作(无论如何都是开箱即用的).

Sidekiq:

优点

  • 每个工作者运行线程(使用更少的内存);
  • 少分叉(工作更快);
  • 开箱即用的更多选项.

缺点

  • [huge]需要代码和所有依赖项的线程安全.如果你用线程运行线程不安全的代码,你就会遇到麻烦;
  • 对某些红宝石的效果比其他红宝石更好(建议使用jruby,由于GVL(全局VM锁定),MRI的效率会降低).

  • @mrbrdo你不能错.GVL与ruby代码的线程安全无关.GVL是关于ruby解释器代码(MRI C代码)的线程安全性. (25认同)
  • 你怎么知道你是否正在运行"线程不安全的代码"? (17认同)
  • 例如,如果你在全局变量中存储状态,那么你就麻烦了:)至于宝石,这里有一些[在维基](https://github.com/mperham/sidekiq/wiki/Problems -and-故障检测). (4认同)
  • 我不得不反驳Resque上的'pro',上面写着'你可以使用任何红宝石'.Resque的README今天实际上说'我们很乐意支持非MRI红宝石,但它们可能有虫子.' https://github.com/resque/resque/blob/master/README.md#requirements (2认同)
  • 如果你打算使用therubyracer在你的工作中运行JavaScript,我会特别避免使用Sidekiq.这不是Sidekiq本身的错,但多线程会导致therubyracer出现问题.请参阅https://github.com/cowboyd/therubyracer/issues/206 (2认同)

Fir*_*ari 29

Ryan本周为Sidekiq创建了一个网络广播,其中还包括与Resque的一些比较.你可能想看一下:

网址:http: //railscasts.com/episodes/366-sidekiq


Gur*_*ngh 10

从问题:

特别是我想知道有没有办法以编程方式监控作业是否在sidekiq中完成

这是一个解决方案:

  1. Sidekiq ::状态宝石
  2. 批处理API(Sidekiq Pro) - 用法