Считайте определенные запланированные задания Sidekiq с Redis - PullRequest
0 голосов
/ 27 августа 2018

Есть ли способ использовать Redis для получения следующего количества заданий?

Sidekiq::ScheduledSet.new.inject(0) do |memo, job|
  memo += 1 if job.at <= Time.now
  memo
end

т.е. задания, которые запланированы, должны были уже быть выполнены, но не были. Это работает нормально для меньших размеров очереди, но плохо масштабируется для больших (более 30 секунд для запланированных заданий по 60 тыс.). Спасибо!

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Вдохновленный Майком, я выбрал следующий подход:

Sidekiq.redis { |c| c.zcount('schedule', '-inf', Time.now.to_f) }
0 голосов
/ 27 августа 2018
"ZRANGEBYSCORE schedule '-inf' #{Time.now.to_f}"

https://redis.io/commands/zrangebyscore

...