:doc:`SQS <../../sqs>` / Client / delete_message

**************
delete_message
**************



.. py:method:: SQS.Client.delete_message(**kwargs)

  

  Deletes the specified message from the specified queue. To select the message to delete, use the ``ReceiptHandle`` of the message (*not* the ``MessageId`` which you receive when you send the message). Amazon SQS can delete a message from a queue even if a visibility timeout setting causes the message to be locked by another consumer. Amazon SQS automatically deletes messages left in a queue longer than the retention period configured for the queue.

   

  .. note::

    

    Each time you receive a message, meaning when a consumer retrieves a message from the queue, it comes with a unique ``ReceiptHandle``. If you receive the same message more than once, you will get a different ``ReceiptHandle`` each time. When you want to delete a message using the ``DeleteMessage`` action, you must use the ``ReceiptHandle`` from the most recent time you received the message. If you use an old ``ReceiptHandle``, the request will succeed, but the message might not be deleted.

     

    For standard queues, it is possible to receive a message even after you delete it. This might happen on rare occasions if one of the servers which stores a copy of the message is unavailable when you send the request to delete the message. The copy remains on the server and might be returned to you during a subsequent receive request. You should ensure that your application is idempotent, so that receiving a message more than once does not cause issues.

    

  

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/sqs-2012-11-05/DeleteMessage>`_  


  **Request Syntax**
  ::

    response = client.delete_message(
        QueueUrl='string',
        ReceiptHandle='string'
    )
    
  :type QueueUrl: string
  :param QueueUrl: **[REQUIRED]** 

    The URL of the Amazon SQS queue from which messages are deleted.

     

    Queue URLs and names are case-sensitive.

    

  
  :type ReceiptHandle: string
  :param ReceiptHandle: **[REQUIRED]** 

    The receipt handle associated with the message to delete.

    

  
  
  :returns: None
  **Exceptions**
  
  *   :py:class:`SQS.Client.exceptions.InvalidIdFormat`

  
  *   :py:class:`SQS.Client.exceptions.ReceiptHandleIsInvalid`

  
  *   :py:class:`SQS.Client.exceptions.RequestThrottled`

  
  *   :py:class:`SQS.Client.exceptions.QueueDoesNotExist`

  
  *   :py:class:`SQS.Client.exceptions.UnsupportedOperation`

  
  *   :py:class:`SQS.Client.exceptions.InvalidSecurity`

  
  *   :py:class:`SQS.Client.exceptions.InvalidAddress`

  