首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Resque中,有没有一种方法可以将作业提升到队列顶部?

在Resque中,有没有一种方法可以将作业提升到队列顶部?
EN

Stack Overflow用户
提问于 2014-06-17 04:19:23
回答 1查看 363关注 0票数 2

我在一个队列中有一个作业,它的优先级高于该队列中的其他作业。Resque中有没有一种机制可以让我把这个作业移到队列的顶端?

EN

回答 1

Stack Overflow用户

发布于 2014-12-04 10:07:38

如果是临时凹凸,您可以从ruby/rails控制台使用redis,如下所示

代码语言:javascript
复制
class_looking_for = "MyWorker"
args_looking_for = [1234, {"foo" => "bar"}]
queue = "foo"
redis = Resque.redis
key = "queue:#{queue}"

redis.llen(key).times do |n|
  value = redis.lindex(key, n)
  job = Resque.decode(value)
  if job["class"] == class_looking_for && job["args"] == args_looking_for
    redis.lrem(key, value)
    redis.lpush(value)
    break
  end
end

这将遍历redis使用的redis列表中的键,以存储给定的queue并检查它是否与给定的class_looking_forargs_looking_for匹配,根据您的需要调整过滤器( job看起来像这个{"class"=>"PieCutWorker", "args"=>[42529, "heart shape"]}),一旦找到正确的作业,它将从队列中删除,然后附加到队列中。然后,它就准备好被下一个可用的工人接走了。

但是,如果您需要将其作为系统规则,作为job "X" always needs to run right away,那么您最好为该作业创建一个新队列,并将redis worker初始化为

代码语言:javascript
复制
$ QUEUE=important,something,bulk rake resque:work

因为队列参数使用逗号分隔字符串的顺序来定义优先级。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24251541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档