Skip to content

Commit 88dbc44

Browse files
author
Matt George
committed
adding remove_queue method and tests
to pyres.ResQ object
1 parent 47f602a commit 88dbc44

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

src/pyres/__init__.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class ResQ(object):
2020

2121
def __init__(self, server="localhost:6379"):
2222
self.redis = server
23-
self._watched_queues = {}
23+
self._watched_queues = set()
2424

2525
def push(self, queue, item):
2626
self.watch_queue(queue)
@@ -36,11 +36,11 @@ def size(self, queue):
3636
return int(self.redis.llen("queue:%s" % queue))
3737

3838
def watch_queue(self, queue):
39-
if self._watched_queues.has_key(queue):
39+
if queue in self._watched_queues:
4040
return
4141
else:
4242
if self.redis.sadd('queues',str(queue)):
43-
self._watched_queues[queue] = queue
43+
self._watched_queues.add(queue)
4444

4545
def peek(self, queue, start=0, count=1):
4646
return self.list_range('queue:%s' % queue, start, count)
@@ -112,6 +112,12 @@ def workers(self):
112112
def working(self):
113113
raise NotImplementedError
114114

115+
def remove_queue(self, queue):
116+
if queue in self._watched_queues:
117+
self._watched_queues.remove(queue)
118+
self.redis.srem('queues',queue)
119+
del self.redis['queue:%s' % queue]
120+
115121
@classmethod
116122
def encode(cls, item):
117123
return simplejson.dumps(item)

src/tests.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,16 @@ def test_enqueue_from_string(self):
116116
assert not self.redis.get('worker:%s' % worker)
117117
assert not self.redis.get("stat:failed")
118118
assert not self.redis.get("stat:failed:%s" % name)
119+
120+
def test_remove_queue(self):
121+
self.resq.enqueue_from_string('tests.Basic','basic','test1')
122+
assert 'basic' in self.resq._watched_queues
123+
assert self.redis.sismember('queues','basic')
124+
assert self.redis.llen('queue:basic') == 1
125+
self.resq.remove_queue('basic')
126+
assert 'basic' not in self.resq._watched_queues
127+
assert not self.redis.sismember('queues','basic')
128+
assert not self.redis.exists('queue:basic')
119129

120130
class JobTests(PyResTests):
121131
def test_reserve(self):

0 commit comments

Comments
 (0)