diff --git a/django_q/brokers/__init__.py b/django_q/brokers/__init__.py index a8380ee..0d10cac 100644 --- a/django_q/brokers/__init__.py +++ b/django_q/brokers/__init__.py @@ -29,6 +29,11 @@ class Broker(object): """ pass + def lock_size(self): + """ + :return: the number of tasks currently awaiting acknowledgement + """ + def delete_queue(self): """ Deletes the queue from the broker diff --git a/django_q/monitor.py b/django_q/monitor.py index 3671e83..6a3bcf4 100644 --- a/django_q/monitor.py +++ b/django_q/monitor.py @@ -83,8 +83,9 @@ def monitor(run_once=False, broker=None): # bottom bar i += 1 queue_size = broker.queue_size() - if hasattr(broker, 'lock_size'): - queue_size = '{}({})'.format(queue_size, broker.lock_size()) + lock_size = broker.lock_size() + if lock_size: + queue_size = '{}({})'.format(queue_size, lock_size) print(term.move(i, 0) + term.white_on_cyan(term.center(broker.info(), width=col_width * 2))) print(term.move(i, 2 * col_width) + term.black_on_cyan(term.center(_('Queued'), width=col_width))) print(term.move(i, 3 * col_width) + term.white_on_cyan(term.center(queue_size, width=col_width))) diff --git a/django_q/tests/test_brokers.py b/django_q/tests/test_brokers.py index 150adfd..59514cc 100644 --- a/django_q/tests/test_brokers.py +++ b/django_q/tests/test_brokers.py @@ -12,6 +12,7 @@ def test_broker(): broker.enqueue('test') broker.dequeue() broker.queue_size() + broker.lock_size() broker.purge_queue() broker.delete('id') broker.delete_queue() diff --git a/django_q/tests/test_monitor.py b/django_q/tests/test_monitor.py index 69d9af5..2c73723 100644 --- a/django_q/tests/test_monitor.py +++ b/django_q/tests/test_monitor.py @@ -1,6 +1,6 @@ import pytest -from django_q import async +from django_q import async, get_broker from django_q.cluster import Cluster from django_q.monitor import monitor, info from django_q.status import Stat @@ -23,9 +23,14 @@ def test_monitor(): assert stat.empty_queues() is True break assert found_c is True - # test lock size for orm broker + # test lock size Conf.ORM = 'default' - monitor(run_once=True) + b = get_broker('monitor_test') + b.enqueue('test') + b.dequeue() + assert b.lock_size() == 1 + monitor(run_once=True, broker=b) + b.delete_queue() Conf.ORM = None