2014-06-16 42 views

回答

0

如果它是一個即興碰你可以使用Redis的從一個的Ruby/Rails控制檯

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的存儲給出queue並檢查它是否符合Redis的列表中的鍵這將循環給定class_looking_forargs_looking_for,根據需要調整過濾器(job看起來像這樣{"class"=>"PieCutWorker", "args"=>[42529, "heart shape"]}),一旦找到正確的作業,它將從隊列中刪除,然後附加到它。然後準備好接受下一位可用的工作人員。

但是,如果你需要這個作爲一個系統規則,因爲job "X" always needs to run right away,那麼你最好還是爲工作創建一個新的隊列,要麼初始化Redis的工人

$ QUEUE=important,something,bulk rake resque:work 

作爲隊列PARAM使用順序用逗號分隔字符串來定義優先級。

相關問題