Respect VisibilityTimeout when calling receive_message

Previously, receive_message would always use the queue's default
visibility timeout instead of the value passed as a query parameter when
calling the receive_message method on an SQS connection.
This commit is contained in:
Matt Long 2016-05-31 14:58:37 -07:00
commit 9b7902018f
3 changed files with 46 additions and 8 deletions

View file

@ -265,7 +265,7 @@ class SQSBackend(BaseBackend):
return message
def receive_messages(self, queue_name, count, wait_seconds_timeout):
def receive_messages(self, queue_name, count, wait_seconds_timeout, visibility_timeout):
"""
Attempt to retrieve visible messages from a queue.
@ -276,6 +276,7 @@ class SQSBackend(BaseBackend):
:param string queue_name: The name of the queue to read from.
:param int count: The maximum amount of messages to retrieve.
:param int visibility_timeout: The number of seconds the message should remain invisible to other queue readers.
"""
queue = self.get_queue(queue_name)
result = []
@ -288,7 +289,7 @@ class SQSBackend(BaseBackend):
if not message.visible:
continue
message.mark_received(
visibility_timeout=queue.visibility_timeout
visibility_timeout=visibility_timeout
)
result.append(message)
if len(result) >= count: