【问题标题】:Resque vs Sidekiq? [closed]Resque vs Sidekiq? [关闭]
【发布时间】:2012-07-19 19:47:53
【问题描述】:

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

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

【问题讨论】:

  • 很高兴看到这个问题没有因为“不适合 SO”而被关闭。
  • 我们能否停止关闭所有好问题,请大家。我知道它很宽泛,也很重要也很有趣。
  • 有一天他们将发明一个网站,程序员可以在该网站上提问,并且该网站将允许主观回答。可以忽略的问题,甚至可以根据相关性进行投票。
  • @baash05,它将被称为 Quora!
  • 它将被称为雅虎问答,质量将一落千丈。

标签: ruby ruby-on-rails-3 resque sidekiq


【解决方案1】:

回复:

优点:

缺点

  • 为每个工作人员运行一个进程(使用更多内存);
  • 不重试作业(无论如何,开箱即用)。

Sidekiq:

优点

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

缺点

  • [huge] 需要您的代码和所有依赖项 的线程安全。如果你用线程运行线程不安全的代码,你就是在自找麻烦;
  • 在某些 rubies 上的工作比其他的更好(推荐使用 jruby,由于 GVL(全局 VM 锁定),MRI 的效率会降低)。

【讨论】:

  • 你怎么知道你是否在运行“线程不安全代码”?
  • 例如,如果您将状态存储在全局变量中,那么您就有麻烦了 :) 至于 gem,这里有一些 in the wiki
  • @mrbrdo 你大错特错了。 GVL 与 ruby​​ 代码的线程安全无关。 GVL 是关于 ruby​​ 解释器代码(MRI C 代码)的线程安全性。
  • 我不得不反驳 Resque 上的“专业人士”说“你可以使用任何红宝石”。今天 Resque 的自述文件实际上说“我们很乐意支持非 MRI 红宝石,但它们可能有错误。” github.com/resque/resque/blob/master/README.md#requirements
  • 如果您打算使用 therubyracer 在作业中运行 JavaScript,我会特别避免使用 Sidekiq。这不是 Sidekiq 本身的错,但多线程会导致 therubyracer 出现问题。见github.com/cowboyd/therubyracer/issues/206
【解决方案2】:

来自问题:

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

这是一个解决方案:

  1. Sidekiq::Status gem
  2. 批处理 API (Sidekiq Pro) - usage

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多