summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTheo <theo.despoudis@teckro.com>2017-09-08 12:59:36 +0100
committerTheo <theo.despoudis@teckro.com>2017-09-08 12:59:36 +0100
commit160fe99323313ad10e368d868c834fcc680643d2 (patch)
tree5eab83bad4cf6ed1e19729339d7550b8a9310a10
parent009c478822251771202009de7c15d2d6037d5010 (diff)
downloadrq-160fe99323313ad10e368d868c834fcc680643d2.tar.gz
Fixed #731 - Support for deleting Queues
-rw-r--r--rq/queue.py6
-rw-r--r--tests/test_queue.py14
2 files changed, 20 insertions, 0 deletions
diff --git a/rq/queue.py b/rq/queue.py
index 9d2357f..dc961b8 100644
--- a/rq/queue.py
+++ b/rq/queue.py
@@ -111,6 +111,12 @@ class Queue(object):
script = self.connection.register_script(script)
return script(keys=[self.key])
+ def delete(self):
+ """Deletes the queue and all the associated messages on the queue."""
+ self.empty()
+ self.connection.srem(self.redis_queues_keys, self._key)
+ self.connection.delete(self._key)
+
def is_empty(self):
"""Returns whether the current queue is empty."""
return self.count == 0
diff --git a/tests/test_queue.py b/tests/test_queue.py
index 7129452..5a6aa20 100644
--- a/tests/test_queue.py
+++ b/tests/test_queue.py
@@ -72,6 +72,20 @@ class TestQueue(RQTestCase):
self.testconn.rpush('rq:queue:example', 'sentinel message')
self.assertEqual(q.is_empty(), False)
+ def test_queue_delete(self):
+ """Test queue.delete properly removes queue"""
+ q = Queue('example')
+ self.testconn.rpush('rq:queue:example', 'foo')
+ self.testconn.rpush('rq:queue:example', 'bar')
+
+ self.assertEqual(2, len(q.get_job_ids()))
+
+ q.delete()
+
+ self.assertEqual(0, len(q.get_job_ids()))
+ self.assertEqual(0, len(self.testconn.smembers(Queue.redis_queues_keys)))
+ self.assertEqual(False, self.testconn.exists(q.key))
+
def test_remove(self):
"""Ensure queue.remove properly removes Job from queue."""
q = Queue('example')