以下是我的需求:

  • 排队等候(10小时,…)(DJ语法非常完美.)
  • 同时增加工人人数.(Resque或beanstalkd对这一点有好处,但不是DJ)
  • 必须每秒处理100个工作.(我需要做一个测试来确定,但我认为DJ不能处理这么多工作)

Resque和Beanstalk不排队.

有一个插件(resque_scheduler)可以做到这一点,但我不确定它有多稳定.

我们的环境在亚马逊上,他们为拥有亚马逊实例的用户免费推出beanstalkd,这对我们来说是一个优势,但我仍然不确定这里的最佳 Select 是什么.

我们运行rails 2.3,但我们很快就会将其加速到rails 3.0.3.

但我最好的 Select 是什么?

我觉得现在唯一有效的 Select 就是resque_调度器.

编辑:

Sidekiq(https://github.com/mperham/sidekiq)是另一个你应该go 看看的选项.

推荐答案

对于我的项目,我会感到非常舒适,有collectiveidea/delayed_job个rails2和3.

Resque vs DelayedJob

Resque与DelayedJob相比如何?为什么你会 Select 其中一个?

  • Resque支持多个队列
  • DelayedJob支持更细粒度的优先级
  • Resque工作人员对内存泄漏/inflating 具有弹性
  • 延迟工作人员非常简单,而且很容易修改
  • Resque需要Redis
  • DelayedJob需要ActiveRecord
  • Resque只能将JSO对象作为参数放置在队列中
  • DelayedJob可以将任何Ruby对象作为参数放置在其队列中
  • Resque包括一个Sinatra应用程序,用于监控正在发生的事情
  • 如果您想添加界面,可以从Rails应用程序中查询DelayedJob

如果您正在进行Rails开发,那么您已经有了一个数据库和ActiveRecord.DelayedJob非常容易安装,效果非常好.GitHub使用了数月,处理了近2亿个工作岗位.

如果出现以下情况,请 Select 重新设置:

  • 你需要多个队列
  • 你不在乎/不喜欢数字优先权
  • 你不需要保存所有的Ruby对象
  • 你可能会排很多队
  • 你想看看发生了什么吗
  • 你预计会有很多失败/混乱
  • 你可以设置Redis
  • 你的内存还不够

如果出现以下情况,请 Select DelayedJob:

  • 你喜欢数字优先权
  • 你没有每天做大量的工作
  • 你的队伍保持小而灵活
  • 没有太多的失败/混乱
  • 你想轻易地把任何东西扔到队列上吗
  • 你不想安装Redis

Select 豆茎,如果:

  • 你喜欢数字优先权
  • 你想要非常快的排队
  • 你不想浪费你的公羊
  • 你想为大量工作服务
  • 可以使用队列中的JSO对象作为参数
  • 你需要多个队列

Resque决不是一个"更好"的延迟工作,所以一定要 Select 最适合你的应用程序的工具.

漂亮的comparison of queueing backend speed:

                 enqueue                work
-------------------------------------------------
delayed job |   200 jobs/sec     120 jobs/sec
resque      |  3800 jobs/sec     300 jobs/sec
rabbitmq    |  2500 jobs/sec    1300 jobs/sec
beanstalk   |  9000 jobs/sec    5200 jobs/sec

祝您有个美好的一天!

另外,有一条铁路大约有resqueDelayed Job(revised version)和Beanstakld.看一看

P.P.S.我最喜欢的choiche现在是Sidekiq(对于简单的工作来说非常简单、快速和高效),看看this page做比较.

Ruby-on-rails相关问答推荐

错误AESGCMOpen获取密码:消息身份验证失败:Golang解密GCM

关于关联 has_many 的多级/三重嵌套形式

Puma 工作人员无法在 Ubuntu 20.04 VM 上的 Rails 5.2 中启动

引用连接 Rails 表中枚举的查询

Ruby 3 动态关键字参数

ArgumentError:您需要使用 :if 提供至少一个验证

基于 2 列定义唯一主键

FactoryGirl 和 Rspec 测试中 attributes_for 的含义

将 Amazon SES 与 Rails ActionMailer 结合使用

Rails 成语避免在 has_many 中重复:通过

在 ruby​​ on rails 上构建方法

未选中时,如何使 check_box_tag 发布false或0参数?

在 Rails 中创建随机 DateTime 的最佳方法

遇到在早期版本的 Rails 中使用 attr_accessible 的情况时,Rails 4 中的禁止属性错误

如何将变量 link_to 定义为外部 URL

如何在 VS Code 中自动格式化 Ruby 或 .erb 文件?

从模型中获取验证

Rails:为什么 with_exclusive_scope 受保护?关于如何使用它的任何好的做法?

Ruby on Rails Bootstrap Glyphicons 不工作

警告:运行 ruby​​ 或 gem 命令时不安全的世界可写目录