Skip to content

Commit ff25b6b

Browse files
author
Matt George
committed
fixes to issue binarymatt#46
Because there can be multiple items in a single timestamp for the delayed queue, counting just the timestamp doesn't work.
1 parent 48fdb5c commit ff25b6b

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

pyres/__init__.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,8 +244,12 @@ def delayed_timestamp_peek(self, timestamp, start, count):
244244
return self.list_range('resque:delayed:%s' % timestamp, start, count)
245245

246246
def delayed_queue_schedule_size(self):
247-
return self.redis.zcard('resque:delayed_queue_schedule')
248-
247+
size = 0
248+
length = self.redis.zcard('resque:delayed_queue_schedule')
249+
for i in self.redis.zrange('resque:delayed_queue_schedule',0,length):
250+
size += self.delayed_timestamp_size(i)
251+
return size
252+
249253
def delayed_timestamp_size(self, timestamp):
250254
#key = int(time.mktime(timestamp.timetuple()))
251255
return self.redis.llen("resque:delayed:%s" % timestamp)

tests/test_schedule.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,13 @@ def test_enqueue_at(self):
2222
def test_delayed_queue_schedule_size(self):
2323
d = datetime.datetime.now() + datetime.timedelta(days=1)
2424
d2 = d + datetime.timedelta(days=1)
25+
d3 = d
2526
key = int(time.mktime(d.timetuple()))
2627
key2 = int(time.mktime(d2.timetuple()))
2728
self.resq.enqueue_at(d, Basic,"test1")
2829
self.resq.enqueue_at(d2, Basic,"test1")
29-
assert self.resq.delayed_queue_schedule_size() == 2
30+
self.resq.enqueue_at(d3, Basic,"test1")
31+
assert self.resq.delayed_queue_schedule_size() == 3
3032

3133
def test_delayed_timestamp_size(self):
3234
d = datetime.datetime.now() + datetime.timedelta(days=1)

0 commit comments

Comments
 (0)