gpt4 book ai didi

ruby-on-rails - 如何洗牌 Resque 队列中的作业?

转载 作者:数据小太阳 更新时间:2023-10-29 07:20:09 25 4
gpt4 key购买 nike

我有一个名为 check_integrity 的队列,里面有很多作业。当我为它运行一个 worker 时,它会先执行工作。是否可以洗牌该特定队列中的作业?我需要 worker 随机接受工作。请帮忙。

谢谢。

最佳答案

解决此问题的一种方法是从队列中弹出条目,对它们进行批处理,打乱批处理,然后重新插入它们:

key = "resque:queue:bulk"
total = Redis.current.llen(key)
batch_size = 5_000 # any value that is good enough for you

batch = []
total.times do |i|
entry = Redis.current.lpop(key)
batch << entry
if batch.size == batch_size || i.succ == total
puts "re-inserting batch..."
Redis.current.rpush key, batch.shuffle
batch = []
end
end

当您错误地将多个作业排入队列并最终争用共享资源、锁等时,这非常有用。

关于ruby-on-rails - 如何洗牌 Resque 队列中的作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7090719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com