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):
"""Removes all messages on the queue."""
job_list = self.get_jobs()
self.connection.delete(self.key)
for job in job_list:
job.cancel()
def is_empty(self):
"""Returns whether the current queue is empty."""
@ -151,7 +154,7 @@ class Queue(object):
job = Job.create(func, args, kwargs, connection=self.connection,
result_ttl=result_ttl, status=Status.QUEUED,
description=description, dependency=after)
# If job depends on an unfinished job, register itself on it's
# parent's waitlist instead of enqueueing it.
# If WatchError is raised in the process, that means something else is
@ -168,7 +171,7 @@ class Queue(object):
break
except WatchError:
continue
return self.enqueue_job(job, timeout=timeout)
def enqueue(self, f, *args, **kwargs):
@ -219,7 +222,7 @@ class Queue(object):
the properties `origin` and `enqueued_at`.
If Queue is instantiated with async=False, job is executed immediately.
"""
"""
# Add Queue key set
self.connection.sadd(self.redis_queues_keys, self.key)

@ -43,6 +43,14 @@ class TestQueue(RQTestCase):
self.assertEquals(q.is_empty(), True)
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):
"""Detecting empty queues."""
q = Queue('example')

Loading…
Cancel
Save