作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有 5 个 Resque worker 设置如下:
QUEUE=* rake environment resque:work
QUEUE=* rake environment resque:work
QUEUE=* rake environment resque:work
当我从事这样繁重的工作时:
100.times do
Resque.enqueue(DoTheJob)
end
第一个 worker 得到大约 80 的工作,其他 worker 分享其余的...
就我而言,我可能有 40 个并发且非常繁重的工作 - 视频转码 -。它们将被连续触发,我希望工作能够平等地或至少公平地与我现有的 worker 分开(他们最多可以有 30 个)。
是否有一个选项或类似的东西?
我怎样才能做到这一点?
谢谢
最佳答案
好吧,当我用像这样的最简单的 Resque 工作类结构尝试上面的代码时:
class MyWorker
@queue=:test
def self.perform(data)
puts "Testing...."
end
end
100.times do
Resque.enqueue(MyWorker)
end
所有作业都排队等待同一个 worker 。
但是。
当我让 worker sleep
几秒钟时,我发现工作被相当公平地干扰了。
class MyWorker @queue=:test
def self.perform(data)
puts "Testing...."
sleep 3
end
end
我不知道 Resque 用于此目的的算法是什么,但看起来没有问题。
关于ruby-on-rails - 有没有办法让 Resque 平均分配给定的工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19245197/
我是一名优秀的程序员,十分优秀!