2018-07-11 07:39:36 +02:00
|
|
|
.. Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
|
|
|
|
|
|
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0
|
|
|
|
International License (the "License"). You may not use this file except in compliance with the
|
|
|
|
License. A copy of the License is located at http://creativecommons.org/licenses/by-nc-sa/4.0/.
|
|
|
|
|
|
|
|
This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
|
|
|
either express or implied. See the License for the specific language governing permissions and
|
|
|
|
limitations under the License.
|
|
|
|
|
|
|
|
.. _aws-boto3-sqs-visibility-timeout:
|
|
|
|
|
|
|
|
#########################################
|
2021-09-22 18:34:33 +02:00
|
|
|
Managing visibility timeout in Amazon SQS
|
2018-07-11 07:39:36 +02:00
|
|
|
#########################################
|
|
|
|
|
|
|
|
This Python example shows you how to specify the time interval during which messages received by a
|
|
|
|
queue are not visible.
|
|
|
|
|
2021-09-22 18:34:33 +02:00
|
|
|
The scenario
|
2018-07-11 07:39:36 +02:00
|
|
|
============
|
|
|
|
|
|
|
|
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:
|
|
|
|
|
2019-01-28 22:47:44 +01:00
|
|
|
* `set_queue_attributes <https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sqs.html#SQS.Client.set_queue_attributes>`_.
|
2018-07-11 07:39:36 +02:00
|
|
|
|
|
|
|
For more information about Amazon SQS visibility timeout, see
|
|
|
|
`Visibility Timeout <http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html>`_
|
|
|
|
in the *Amazon Simple Queue Service Developer Guide*.
|
|
|
|
|
2021-09-22 18:34:33 +02:00
|
|
|
Prerequisite tasks
|
2018-07-11 07:39:36 +02:00
|
|
|
==================
|
|
|
|
|
|
|
|
To set up and run this example, you must first complete these tasks:
|
|
|
|
|
2019-10-20 18:51:09 +02:00
|
|
|
* Create an Amazon SQS queue. For an example of creating an Amazon SQS
|
|
|
|
queue, see :ref:`aws-boto3-sqs-create-queue`.
|
2018-07-11 07:39:36 +02:00
|
|
|
|
2019-10-20 18:51:09 +02:00
|
|
|
* Send a message to the queue. For an example of sending a message to a
|
|
|
|
queue, see :ref:`aws-boto3-sqs-send-message`.
|
2018-07-11 07:39:36 +02:00
|
|
|
|
2021-09-22 18:34:33 +02:00
|
|
|
Change the visibility timeout
|
2018-07-11 07:39:36 +02:00
|
|
|
=============================
|
|
|
|
|
|
|
|
The example below shows how to:
|
|
|
|
|
|
|
|
* Change the visibility timeout using
|
2019-01-28 22:47:44 +01:00
|
|
|
`set_queue_attributes <https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sqs.html#SQS.Client.set_queue_attributes>`_.
|
2018-07-11 07:39:36 +02:00
|
|
|
|
|
|
|
Example
|
|
|
|
-------
|
|
|
|
|
|
|
|
.. code-block:: python
|
|
|
|
|
|
|
|
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,
|
2019-01-28 22:47:44 +01:00
|
|
|
VisibilityTimeout=20
|
2018-07-11 07:39:36 +02:00
|
|
|
)
|
|
|
|
print('Received and changed visibility timeout of message: %s' % message)
|