mirror of
https://github.com/mperham/sidekiq.git
synced 2022-11-09 13:52:34 -05:00
allow for Range
with fetch
This commit is contained in:
parent
9b75467b33
commit
c0c1ab25e5
2 changed files with 36 additions and 7 deletions
|
@ -596,18 +596,25 @@ module Sidekiq
|
|||
end
|
||||
end
|
||||
|
||||
##
|
||||
# Fetch jobs that match a given time or Range. Job ID is an
|
||||
# optional second argument.
|
||||
def fetch(score, jid = nil)
|
||||
begin_score, end_score =
|
||||
if score.is_a?(Range)
|
||||
[score.first, score.last]
|
||||
else
|
||||
[score, score]
|
||||
end
|
||||
|
||||
elements = Sidekiq.redis { |conn|
|
||||
conn.zrangebyscore(name, score, score)
|
||||
conn.zrangebyscore(name, begin_score, end_score, with_scores: true)
|
||||
}
|
||||
|
||||
elements.each_with_object([]) do |element, result|
|
||||
entry = SortedEntry.new(self, score, element)
|
||||
if jid
|
||||
result << entry if entry.jid == jid
|
||||
else
|
||||
result << entry
|
||||
end
|
||||
data, job_score = element
|
||||
entry = SortedEntry.new(self, job_score, data)
|
||||
result << entry if jid.nil? || entry.jid == jid
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -414,6 +414,28 @@ describe 'API' do
|
|||
assert_equal 1, r.fetch(same_time, 'bob1').size
|
||||
end
|
||||
|
||||
it 'can fetch by score range' do
|
||||
same_time = Time.now.to_f
|
||||
add_retry('bob1', same_time)
|
||||
add_retry('bob2', same_time + 1)
|
||||
add_retry('bob3', same_time + 2)
|
||||
r = Sidekiq::RetrySet.new
|
||||
range = (same_time..(same_time + 1))
|
||||
assert_equal 2, r.fetch(range).size
|
||||
end
|
||||
|
||||
it 'can fetch by score range and jid' do
|
||||
same_time = Time.now.to_f
|
||||
add_retry('bob1', same_time)
|
||||
add_retry('bob2', same_time + 1)
|
||||
add_retry('bob3', same_time + 2)
|
||||
r = Sidekiq::RetrySet.new
|
||||
range = (same_time..(same_time + 1))
|
||||
jobs = r.fetch(range, 'bob2')
|
||||
assert_equal 1, jobs.size
|
||||
assert_equal jobs[0].jid, 'bob2'
|
||||
end
|
||||
|
||||
it 'shows empty retries' do
|
||||
r = Sidekiq::RetrySet.new
|
||||
assert_equal 0, r.size
|
||||
|
|
Loading…
Add table
Reference in a new issue