Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 延迟的工作,重新的工作,豆茎?_Ruby On Rails_Redis_Resque_Beanstalkd - Fatal编程技术网

Ruby on rails 延迟的工作,重新的工作,豆茎?

Ruby on rails 延迟的工作,重新的工作,豆茎?,ruby-on-rails,redis,resque,beanstalkd,Ruby On Rails,Redis,Resque,Beanstalkd,以下是我的需要: 排队等候(10.6小时,…)(DJ语法非常完美。) 同时增加工人人数。(Resque或beanstalkd对此有好处,但不是DJ) 必须处理每秒100个工作的推送和弹出。(我需要运行一个测试来确保,但我认为DJ不能处理这么多的工作) Resque和beanstalkd不排队 有一个插件(resque_调度程序)可以实现这一点,但我不确定它有多稳定 我们的环境在amazon上,他们为拥有amazon实例的用户免费推出beanstalkd,这对我们来说是一个好处,但我仍然不确定

以下是我的需要:

  • 排队等候(10.6小时,…)(DJ语法非常完美。)
  • 同时增加工人人数。(Resque或beanstalkd对此有好处,但不是DJ)
  • 必须处理每秒100个工作的推送和弹出。(我需要运行一个测试来确保,但我认为DJ不能处理这么多的工作)
Resque和beanstalkd不排队

有一个插件(resque_调度程序)可以实现这一点,但我不确定它有多稳定

我们的环境在amazon上,他们为拥有amazon实例的用户免费推出beanstalkd,这对我们来说是一个好处,但我仍然不确定这里的最佳选择是什么

我们运行Rails2.3,但我们很快就会将其加速到Rails3.0.3

但我在这里的最佳选择是什么? 我是不是错过了另一块做这项工作更好的宝石

我觉得现在唯一有效的选择是resque_调度程序

编辑:


Sidekiq()是您应该查看的另一个选项。

对于我在rails2和Rails3中的项目,我会感到非常舒服。 我不知道豆茎,但我很快就会尝的:-)。 我遵循了resque文档中的建议。 我会报告的

Resque vs DelayedJob
Resque与DelayedJob相比如何?为什么您会选择其中一个

  • Resque支持多个队列
  • DelayedJob支持更细粒度的优先级
  • Resque工作人员对内存泄漏/膨胀具有弹性
  • 延迟工作人员非常简单,并且易于修改
  • Resque需要Redis
  • DelayedJob需要ActiveRecord
  • Resque只能将JSO对象作为参数放置在队列上
  • DelayedJob可以将任何Ruby对象作为参数放置在其队列上
  • Resque包括一个Sinatra应用程序,用于监控正在发生的事情
  • 如果要添加界面,可以从Rails应用程序中查询DelayedJob
如果您正在进行Rails开发,那么您已经有了一个数据库和ActiveRecord。DelayedJob非常容易设置,效果非常好。GitHub使用它几个月来处理了近2亿个工作

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

  • 您需要多个队列
  • 你不在乎/不喜欢数字优先权
  • 您不需要保存每个Ruby对象
  • 你有潜在的巨大队列
  • 你想看看发生了什么吗
  • 你预计会有很多失败/混乱
  • 您可以设置Redis
  • 你的内存不是不够
如果出现以下情况,请选择DelayedJob:

  • 你喜欢数字优先权
  • 你没有每天做大量的工作
  • 你的队伍保持小而灵活
  • 没有太多的失败/混乱
  • 你想轻易地把任何东西扔到队列上吗
  • 您不想设置Redis
如果出现以下情况,请选择Beanstalkd:

  • 你喜欢数字优先权
  • 你需要非常快的队列
  • 你不想浪费你的公羊
  • 你想从事大量的工作
  • 您可以使用队列上的JSO对象作为参数
  • 您需要多个队列
Resque决不是一个“更好”的延迟工作,所以请确保您选择了最适合您的应用程序的工具

A很好:

祝你今天愉快

顺便说一句,()和附近有一条铁路。看一看


p.p.S.我现在最喜欢的选择是(对于简单的工作来说非常简单、快速和高效),看看比较一下。

亚马逊豆茎不是豆茎

Beanstalkd(队列)确实有延迟的作业,在给定的秒数过去之前,这些作业不会保留在队列之外。如果这就是排队(10.hours,…)的意思,那么计算秒数只是语法上的糖分,在此之前不允许作业可用。

只是一个小提示:支持命名队列

object.delay(:queue => 'tracking').method    
Delayed::Job.enqueue job, :queue => 'tracking'    
handle_asynchronously :tweet_later, :queue => 'tweets'

这是正确的。beanstalkd的put操作接受一个值,该值是作业准备好接收之前的秒数。它还支持优先级。这些队列是否并行运行?是的,您也可以指定每个队列的线程数。如果这样,使用resque的原因是什么?只是想把一切都做完。@baash05-Resque仍然有更好的报告功能,并且不在关系数据库中,因此可以一次处理队列中的更多事情。这取决于你想象的混乱程度。三个10000人的排队可以很好地阻碍延迟工作的进行。resque/redis中的三个10000条输入队列是标准的,并且很容易处理。我发现使用Oracle11g,延迟的_作业可以处理500K-700k左右的作业。我认为除了默认的DJ生成器创建的索引之外,我们还添加了一到两个索引。Delayed_job_web是一种跟踪事物的简单方法。Delayed job现在支持队列。。(有一段时间)回答得很好。赫罗库支持Beanstakld吗?回答得很好。谢谢:)过时的答案,DJ不再处理“任何”ruby对象,因为yaml解析器现在无法导出匿名模块和文件流,因此,例如,几乎不可能安全地转储
request.env
object.delay(:queue => 'tracking').method    
Delayed::Job.enqueue job, :queue => 'tracking'    
handle_asynchronously :tweet_later, :queue => 'tweets'