Managing visibility timeout in Amazon SQS#

This Python example shows you how to specify the time interval during which messages received by a queue are not visible.

The scenario#

In this example, Python code is used to manage visibility timeout. The code uses the SDK for Python to manage visibility timeout by using this method of the AWS.SQS client class:

For more information about Amazon SQS visibility timeout, see Visibility Timeout in the Amazon Simple Queue Service Developer Guide.

Prerequisite tasks#

To set up and run this example, you must first complete these tasks:

  • Create an Amazon SQS queue. For an example of creating an Amazon SQS queue, see Create a queue.

  • Send a message to the queue. For an example of sending a message to a queue, see Send a message to a queue.

Change the visibility timeout#

The example below shows how to:


import boto3

# Create SQS client
sqs = boto3.client('sqs')

queue_url = 'SQS_QUEUE_URL'

# Receive message from SQS queue
response = sqs.receive_message(
    QueueUrl=queue_url,
    AttributeNames=[
        'SentTimestamp'
    ],
    MaxNumberOfMessages=1,
    MessageAttributeNames=[
        'All'
    ],
)

message = response['Messages'][0]
receipt_handle = message['ReceiptHandle']

# Change visibility timeout of message from queue
sqs.change_message_visibility(
    QueueUrl=queue_url,
    ReceiptHandle=receipt_handle,
    VisibilityTimeout=20
)
print('Received and changed visibility timeout of message: %s' % message)