這是我用來m的一些代碼將我們現有的復古作業遷移到sidekiq。你可以在rails控制檯中使用它。
['low', 'high', 'critical'].each do |queue|
p [1, queue]
old_queue = "resque:queue:#{queue}"
new_queue = "queue:#{queue}"
# $redis.ltrim new_queue, 0, 0 # can optionally clear out new queue, in case of multiple runs
vals = $redis.lrange(old_queue, 0, -1)
p [2, queue]
$redis.pipelined do
vals.each do |val|
$redis.lpush(new_queue, val)
end
end
end
你也可以設置:
Sidekiq.configure_server do |config|
config.redis = { :namespace => 'resque' }
end
Sidekiq.configure_client do |config|
config.redis = { :namespace => 'resque' }
end
,它會工作的開箱。但是,如果我沒有這個部署,我有這兩種格式的待工作,所以不得不使用我粘貼的第一個代碼來遷移事情。
+1 becoz我不覺得在'redis'列表中有重命名關鍵字api如果有人能證明我的錯誤 – Viren
爲什麼不讓現有的resque工作者刷出他們現有的隊列,讓Sidekiq處理任何新的工作?手動移動工作不應該是必需的。 –
@ChrisHeald因爲這樣做需要等待很長時間。 –