diff --git a/janus/__init__.py b/janus/__init__.py index ba82a25..d05e6d5 100644 --- a/janus/__init__.py +++ b/janus/__init__.py @@ -219,6 +219,11 @@ def qsize(self): '''Return the approximate size of the queue (not reliable!).''' return self._parent._qsize() + @property + def unfinished_tasks(self): + '''Return the number of unfinished tasks.''' + return self._parent._unfinished_tasks + def empty(self): '''Return True if the queue is empty, False otherwise (not reliable!). @@ -341,6 +346,11 @@ def qsize(self): """Number of items in the queue.""" return self._parent._qsize() + @property + def unfinished_tasks(self): + '''Return the number of unfinished tasks.''' + return self._parent._unfinished_tasks + @property def maxsize(self): """Number of items allowed in the queue.""" diff --git a/tests/test_mixed.py b/tests/test_mixed.py index b849b46..dddad64 100644 --- a/tests/test_mixed.py +++ b/tests/test_mixed.py @@ -43,6 +43,20 @@ def test_maxsize_default(self): q = janus.Queue(loop=self.loop) self.assertIs(0, q.maxsize) + def test_unfinished(self): + q = janus.Queue(loop=self.loop) + self.assertEqual(q.sync_q.unfinished_tasks, 0) + self.assertEqual(q.async_q.unfinished_tasks, 0) + q.sync_q.put(1) + self.assertEqual(q.sync_q.unfinished_tasks, 1) + self.assertEqual(q.async_q.unfinished_tasks, 1) + q.sync_q.get() + self.assertEqual(q.sync_q.unfinished_tasks, 1) + self.assertEqual(q.async_q.unfinished_tasks, 1) + q.sync_q.task_done() + self.assertEqual(q.sync_q.unfinished_tasks, 0) + self.assertEqual(q.async_q.unfinished_tasks, 0) + def test_sync_put_async_get(self): q = janus.Queue(loop=self.loop)