diff --git a/rq/queue.py b/rq/queue.py index a87f709..1694268 100644 --- a/rq/queue.py +++ b/rq/queue.py @@ -68,6 +68,9 @@ class Queue(object): job_class = import_attribute(job_class) self.job_class = job_class + def __len__(self): + return self.count + @property def key(self): """Returns the Redis key for this Queue.""" diff --git a/rq/registry.py b/rq/registry.py index afa7b5b..0242280 100644 --- a/rq/registry.py +++ b/rq/registry.py @@ -21,6 +21,16 @@ class StartedJobRegistry: self.key = 'rq:wip:%s' % name self.connection = resolve_connection(connection) + def __len__(self): + """Returns the number of jobs in this registry""" + return self.count + + @property + def count(self): + """Returns the number of jobs in this registry""" + self.move_expired_jobs_to_failed_queue() + return self.connection.zcard(self.key) + def add(self, job, timeout, pipeline=None): """Adds a job to StartedJobRegistry with expiry time of now + timeout.""" score = current_timestamp() + timeout diff --git a/tests/test_job_started_registry.py b/tests/test_job_started_registry.py index addb1db..f99aafd 100644 --- a/tests/test_job_started_registry.py +++ b/tests/test_job_started_registry.py @@ -76,3 +76,10 @@ class TestQueue(RQTestCase): worker.perform_job(job) self.assertNotIn(job.id, registry.get_job_ids()) + + def test_get_job_count(self): + """StartedJobRegistry returns the right number of job count.""" + self.testconn.zadd(self.registry.key, 1, 'foo') + self.testconn.zadd(self.registry.key, 10, 'bar') + self.assertEqual(self.registry.count, 2) + self.assertEqual(len(self.registry), 2) diff --git a/tests/test_queue.py b/tests/test_queue.py index c60b510..e61568e 100644 --- a/tests/test_queue.py +++ b/tests/test_queue.py @@ -101,11 +101,13 @@ class TestQueue(RQTestCase): q.enqueue(say_hello, 'Charlie') self.testconn.lpush(q.key, '1', '2') - self.assertEquals(q.count, 4) + self.assertEqual(q.count, 4) + self.assertEqual(len(q), 4) q.compact() - self.assertEquals(q.count, 2) + self.assertEqual(q.count, 2) + self.assertEqual(len(q), 2) def test_enqueue(self): """Enqueueing job onto queues."""