Merge pull request #254 from not-napoleon/master

Empty now deletes all jobs in the queue
main
Vincent Driessen 11 years ago
commit 97a24eed3b

@ -65,7 +65,10 @@ class Queue(object):
def empty(self): def empty(self):
"""Removes all messages on the queue.""" """Removes all messages on the queue."""
job_list = self.get_jobs()
self.connection.delete(self.key) self.connection.delete(self.key)
for job in job_list:
job.cancel()
def is_empty(self): def is_empty(self):
"""Returns whether the current queue is empty.""" """Returns whether the current queue is empty."""

@ -43,6 +43,14 @@ class TestQueue(RQTestCase):
self.assertEquals(q.is_empty(), True) self.assertEquals(q.is_empty(), True)
self.assertIsNone(self.testconn.lpop('rq:queue:example')) self.assertIsNone(self.testconn.lpop('rq:queue:example'))
def test_empty_removes_jobs(self):
"""Emptying a queue deletes the associated job objects"""
q = Queue('example')
job = q.enqueue(say_hello)
self.assertTrue(Job.exists(job.id))
q.empty()
self.assertFalse(Job.exists(job.id))
def test_queue_is_empty(self): def test_queue_is_empty(self):
"""Detecting empty queues.""" """Detecting empty queues."""
q = Queue('example') q = Queue('example')

Loading…
Cancel
Save