diff --git a/django_q/brokers/aws_sqs.py b/django_q/brokers/aws_sqs.py index 2334c20..111e631 100644 --- a/django_q/brokers/aws_sqs.py +++ b/django_q/brokers/aws_sqs.py @@ -27,6 +27,9 @@ class Sqs(Broker): def queue_size(self): return int(self.queue.attributes['ApproximateNumberOfMessages']) + def lock_size(self): + return int(self.queue.attributes['ApproximateNumberOfMessagesNotVisible']) + def delete(self, task_id): message = self.sqs.Message(self.queue.url, task_id) message.delete() diff --git a/django_q/tests/test_brokers.py b/django_q/tests/test_brokers.py index 6222e34..150adfd 100644 --- a/django_q/tests/test_brokers.py +++ b/django_q/tests/test_brokers.py @@ -216,6 +216,7 @@ def test_sqs(): broker.acknowledge(task[0]) # duplicate acknowledge broker.acknowledge(task[0]) + assert broker.lock_size() == 0 # delete queue broker.enqueue('test') broker.purge_queue() diff --git a/docs/brokers.rst b/docs/brokers.rst index e0de123..429419b 100644 --- a/docs/brokers.rst +++ b/docs/brokers.rst @@ -129,6 +129,11 @@ You can override this class if you want to contribute and support your own broke Returns the amount of messages in the brokers queue. + .. py:method:: lock_size() + + Optional method that returns the number of messages currently awaiting acknowledgement. + Only implemented on brokers that support it. + .. py:method:: ping() Returns True if the broker can be reached.